Think Before You Act: Decision Gate for LLM Agents
Organizations: IBM SIL
Abstract
LLM agents increasingly perform consequential actions through external tools, yet their proposed actions are often executed without independent verification of policy compliance or task completion. We introduce JevAct, a runtime verification framework that intercepts selected agent actions before execution and enables feedback-driven correction. JevAct compiles domain policies into executable state checks and structured questions evaluated by a prefill-only decision model, which produces probability-based judgments without relying on LLM generation. By combining deterministic verification of tool-state facts with probabilistic assessment of conversational context, the framework identifies potentially invalid actions and premature task termination, providing targeted feedback for bounded revision. JevAct operates independently of the underlying agent model and requires no modifications to its parameters or tools. We evaluate JevAct across eleven LLM agents on -bench Airline and Telecom tasks and BFCL. Results show improvements in agent reliability across multiple models and benchmarks, with particularly consistent gains on Telecom and BFCL, while performance on Airline is more mixed. Overall, these findings suggest that combining structured decision models with executable verification can improve the reliability of tool-using LLM agents.
Figures & tables
| Benchmark | Check | Compiled items |
|---|---|---|
| Airline | write gate | 6 write tools, 86 questions (17) |
| Telecom | write gate | 6 write tools, 75 questions (5) |
| hand-off check | 8 problem types, checklist steps (7 dropped) | |
| BFCL | end-of-turn check | – |
| requested-action gate | – |
| pass@3 | pass^3 | ||||
| Benchmark | Model | ReAct | JevAct | ReAct | JevAct |
| Airline | GPT-4.1 | 66.0 | 82.0 | 36.0 | 46.0 |
| Opus 4.6 | 84.0 | 92.0 | 72.0 | 76.0 | |
| gpt-oss-20b | 66.0 | 70.0 | 48.0 | 44.0 | |
| gpt-oss-120b | 68.0 | 66.0 | 42.0 | 50.0 | |
| Qwen3.8-27B | 90.0 | 90.0 | 74.0 | 76.0 | |
| pass^1 | Flags per task | |
|---|---|---|
| ReAct | 50.0 | – |
| JevAct (same configuration as Table 2 ) | 72.0 | 0.38 |
| Code checks only | 68.0 | 0.28 |
| Kev-27B questions only | 57.1 | 0.29 |
| Kev-9B instead of Kev-27B | 58.0 | 0.22 |
| One revision instead of two | 68.0 | 0.32 |
Appendix figures & tables3 assets
Supplementary material from the paper’s appendix.
Appendix
| Step | Reads | Writes | Labels |
|---|---|---|---|
| 1. Questions | policy; write-tool schemas | questions per write tool | none |
| 2. Rule | policy; step-1 questions | allow rule per write tool | none |
| 3. Code | policy, schemas; one read result per tool | derive_<tool> function per write tool | none |
| 4. Repair | code and flags on logged calls | repaired code | none |
| 5. Filter | Kev answers on logged write calls | questions to drop | none |
| 6a. Prerequisites | policy; tool names (Telecom only) | prerequisites | none |
| Kev-27B | Kev-9B | Kev-0.8B | |
|---|---|---|---|
| Hand-offs flagged | 371 | 369 | 342 |
| Same flag/pass decision as Kev-27B | – | 97.0% | 90.6% |
| Required fixes caught (of 533) | 319 | 316 | 299 |
| Unneeded fixes flagged (of 245) | 193 | 195 | 170 |
| Failed episodes incorrectly marked fixed (of 380) | 0 | 0 | 11 |
| ReAct | JevAct | |||||||
| Model | Model | Kev | Drafts | Not | ||||
| Benchmark | Model | in | out | in | out | in | sent back | rebuilt |
| -bench airline 50 tasks 3 | GPT-4.1 | 58.4 | 0.9 | 60.1 | 0.9 | 9.0 | 0.39 | 0 |
| Opus 4.6 | 64.6 | 1.5 | 64.1 | 1.5 | 6.7 | 0.08 | 0 | |
| gpt-oss-20b | 50.4 | 3.0 | 56.8 | 3.4 | 5.2 | 0.19 | 0 | |
| gpt-oss-120b | 44.1 | 2.5 | 43.8 | 2.6 | 6.5 | 0.36 | 0 | |
LLM Agent Verification
LLM agent verification checks whether agents’ actions, evidence, policies, and completion claims satisfy explicit requirements.
See all 148 papers