Same Operation, Different Permission: Evaluating Whether Guardrails Honor Authorization
Organizations: HKUST
Abstract
As language-model agents write code, move money and change records on behalf of users, deciding whether an action is authorized has become a central safety problem. Guardrails are often placed in front of these actions, yet few evaluations ask whether their decisions follow authorization: blocking unauthorized actions while still allowing the same actions under valid permission. We introduce \bench{}, a benchmark that contrasts authorization evidence for the same operation in its language track. It combines expert-annotated natural-language scenarios with executed and verified operations, plus externally sourced native-policy requests. \bench{} checks each decision for correctness, usability and resulting effect, and tracks each request across guardrail changes. Our experiments show that many blocked operations stem from failed reviews, not correct denials. Repairing the output format restores usable decisions but changes which authorized requests are honored, and adding a second reviewer removes some errors while rejecting valid authorization. Guardrails should therefore be evaluated on both the unauthorized actions they stop and the authorized actions they let through.
Figures & tables
| Interface | Forbidden effects /80 | Lawful completions /80 | Unavailable decisions /160 | Mean output tokens |
| Qwen3.5-9B nonthinking | ||||
| Direct review | 3 / 0 / 14 | 57 / 41 / 71 | 0 / 0 / 0 | 963 |
| Structured review | 1 / 1 / 2 | 13 / 10 / 10 | 117 / 121 / 124 | 54,127 |
| NeMo self-check | 74 / 60 / 80 | 80 / 80 / 80 | 1 / 0 / 0 | 320 |
| Schema review | 6 / 0 / 3 | 69 / 68 / 68 | 0 / 0 / 0 | 50,940 |
| Qwen3.5-27B nonthinking | ||||
| Composition | Incorrect approvals /448 | Lawful approvals /767 | Cached consultations |
| Qwen3.5-9B | 261 | 656 | 1,215 |
| Qwen3.5-27B | 1 | 757 | 1,215 |
| Safeguard | 12 | 588 | 1,215 |
| Qwen3.5-9B Qwen3.5-27B | 1 | 648 | 2,132 |
| Qwen3.5-27B Qwen3.5-9B | 1 | 648 | 1,973 |
| Qwen3.5-9B Safeguard | 11 | 503 | 2,132 |
Appendix figures & tables12 assets
Supplementary material from the paper’s appendix.
Appendix
| Domain | Scenarios | Dev | Test | Example authorization requirements |
|---|---|---|---|---|
| Payments and procurement | 11 | 4 | 40 | Delegated limits, cumulative commitments, joint approval |
| Clinical data | 6 | 0 | 24 | Care relationships, representative consent, handoff |
| Software operations | 11 | 20 | 24 | Artifact scope, rollout limits, single-use signing |
| Education and research | 11 | 4 | 40 | Conflicts, project membership, purpose restrictions |
| Documents and customer operations | 11 | 12 | 32 | Recipient scope, representation, disclosure and download rights |
| Total | 50 | 40 | 160 | Four authorization contexts per scenario |
| Configuration | Forbidden effects /80 | Lawful completions /80 | Unavailable decisions /160 | Output limit | Output tokens |
| Eight complete configurations | |||||
| Qwen3.5-9B, nonthinking | 6 | 65 | 0 | 16K | 1,280 |
| Qwen3.5-27B, thinking | 0 | 80 | 0 | 16K | 215,399 |
| Nemotron, custom policy | 58 | 76 | 12 | 16K | 244,679 |
| GPT-OSS Safeguard, native policy | 0 | 80 | 0 | 16K | 47,550 |
| Granite Guardian, custom criteria | 17 | 69 | 0 | 16K | 68,401 |
| Configuration | Forbidden /20 | Lawful /20 | Invalid /40 | Length /40 | Output tokens |
|---|---|---|---|---|---|
| Qwen3.5-9B | 2 | 20 | 0 | 0 | 320 |
| Qwen3.5-27B thinking | 0 | 20 | 0 | 0 | 54,544 |
| Nemotron custom policy | 16 | 20 | 2 | 2 | 45,628 |
| GPT-OSS Safeguard | 0 | 20 | 0 | 0 | 12,542 |
| Granite Guardian | 13 | 18 | 0 | 0 | 17,054 |
| PolicyGuard | 7 | 9 | 24 | 40 | 160 |
| Configuration | Engine | Correct | Incorrect approvals | False denials | Unavailable |
|---|---|---|---|---|---|
| Qwen3.5-9B | OpenFGA | 823/1,181 | 258/436 | 100/745 | 0/1,181 |
| Cedar | 20/34 | 3/12 | 11/22 | 0/34 | |
| Qwen3.5-27B | OpenFGA | 1,170/1,181 | 1/436 | 10/745 | 0/1,181 |
| Cedar | 34/34 | 0/12 | 0/22 | 0/34 | |
| Safeguard | OpenFGA | 996/1,181 | 11/436 | 168/745 | 6/1,181 |
| Cedar | 27/34 | 1/12 | 6/22 | 0/34 |
| Model | Seed | Retained | Lost | Gained | Net change | Adjusted |
|---|---|---|---|---|---|---|
| Qwen3.5-27B | 0 | 73 | 1 | 2 | +1 | 1.000000 |
| Qwen3.5-27B | 1 | 72 | 1 | 3 | +2 | 1.000000 |
| Qwen3.5-27B | 2 | 72 | 2 | 2 | +0 | 1.000000 |
| Qwen3.5-9B | 0 | 56 | 1 | 13 | +12 | 0.069824 |
| Qwen3.5-9B | 1 | 41 | 0 | 27 | +27 | 0.000040 |
| Qwen3.5-9B | 2 | 65 | 6 | 3 | -3 | 1.000000 |
| Reporting view | Observed signal | Supported repair judgment |
|---|---|---|
| Forbidden effects only | Structured and schema review both have zero | Ties prevention, without measuring retained lawful work |
| Add lawful completion | Structured ten, schema review 71 | Shows restored utility, without attributing the difference to output failures |
| Add availability and raw output | Structured has 125 unavailable decisions, schema review zero | Identifies the observed output-contract defect and its repair |
| Add matched request identities | Direct to schema review loses two lawful successes and gains thirteen | Rejects full task-set preservation despite improved aggregate outcomes |
| Composition | Incorrect approvals /448 | Lawful approvals /767 | Unavailable /1,215 | Additional cached consultations |
| Qwen3.5-9B | 261 | 656 | 0 | 0 |
| Qwen3.5-27B | 1 | 757 | 0 | 0 |
| Safeguard | 12 | 588 | 6 | 0 |
| Qwen3.5-9B Qwen3.5-27B | 1 | 648 | 0 | 917 |
| Qwen3.5-9B Safeguard | 11 | 503 | 5 | 917 |
| Qwen3.5-27B Qwen3.5-9B | 1 | 648 | 0 | 758 |
LLM Guardrails
Large language model guardrails detect or constrain harmful outputs, prompt attacks, and unsafe agent actions before they cause harm.
See all 185 papers