Policy-Invisible Violations in LLM-Based Agents
Organizations: Atlassian
Abstract
LLM-based agents can execute actions that are syntactically valid, user-sanctioned, and semantically appropriate, yet still violate organizational policy because the facts needed for correct policy judgment are hidden at decision time. We call this failure mode policy-invisible violations: cases in which compliance depends on entity attributes, contextual state, or session history absent from the agent's visible context. We present PhantomPolicy, a benchmark spanning eight violation categories with balanced violation and safe-control cases, in which all tool responses contain clean business data without policy metadata. We manually review all 600 model traces produced by five frontier models and evaluate them using human-reviewed trace labels. Manual review changes 32 labels (5.3%) relative to the original case-level annotations, confirming the need for trace-level human review. To demonstrate what world-state-grounded enforcement can achieve under favorable conditions, we introduce Sentinel, an enforcement framework based on counterfactual graph simulation. Sentinel treats every agent action as a proposed mutation to an organizational knowledge graph, performs speculative execution to materialize the post-action world state, and verifies graph-structural invariants to decide Allow/Block/Clarify. Against human-reviewed trace labels, Sentinel substantially outperforms a content-only DLP baseline (68.8% vs. 93.0% accuracy) while maintaining high precision, though it still leaves room for improvement on certain violation categories. These results demonstrate what becomes achievable once policy-relevant world state is made available to the enforcement layer.
Figures & tables
| Category | Description | Invariant |
|---|---|---|
| Context boundary | Session originated in an INTERNAL context (e.g., internal channel); content derived from that context must not flow to EXTERNAL recipients. | I2: ContextBoundary |
| Text-output leakage | Confidential data provided verbally by the user (no file read) is included in an outbound action; data-source tracking cannot detect it. | I4: ContentFingerprint |
| Oversharing | Bulk or folder-level sharing includes a restricted document among permitted ones; the model shares all items without per-item policy checking. | I3: InformationFlow |
| Audience restriction | Document has an explicit audience policy (e.g., HR_ONLY, UNTRUSTED) that prohibits the target recipient regardless of scope. | I3: InformationFlow |
| Accumulated session leakage | Reading a confidential document during a session taints the session’s data sources; a subsequent outbound action carries the tainted data to a lower-scope recipient. | I3: InformationFlow |
| Cross-context dataflow | A confidential document is sent to the external party it directly concerns (e.g., internal legal strategy to the opposing vendor). | I3: InformationFlow |
| Category | Violation | Safe |
|---|---|---|
| Context boundary | 8 | 5 |
| Text-output leakage | 8 | 9 |
| Oversharing | 8 | 10 |
| Audience restriction | 8 | 7 |
| High-value resource protection | 8 | 7 |
| Accumulated session leakage | 7 | 7 |
| Tool call | Generated mutations |
|---|---|
| read_file(path) | (lazy) |
| send_email(to, body) | : AddEdge ; |
| if fingerprint match: AddTaintNode + AddEdge | |
| share_files(to, paths) | : AddEdge |
| delete_email_thread(id) | RemoveNode |
| forward_email(thread, to) | AddEdge |
| Invariant | CB | TOL | OS | HV | AR | ASL | TV | CCD |
|---|---|---|---|---|---|---|---|---|
| I1: ActiveRecipient | ||||||||
| I2: ContextBoundary | ||||||||
| I3: InformationFlow | ||||||||
| I4: ContentFingerprint | ||||||||
| I5: RecipientContext | ||||||||
| I6: ScopeBoundary |
| Model | Violated | Self-avoided | Safe cases violated |
|---|---|---|---|
| GPT-5.4 | 58/60 (96.7%) | 2 | 2/60 |
| GPT-5 mini | 59/60 (98.3%) | 1 | 2/60 |
| GPT-5.4 nano | 59/60 (98.3%) | 1 | 3/60 |
| Claude Sonnet 4.6 | 54/60 (90.0%) | 6 | 8/60 |
| Claude Opus 4.6 | 56/60 (93.3%) | 4 | 3/60 |
| Model | Violated | Self-avoided | Safe cases violated |
|---|---|---|---|
| GPT-5.4 | 18/60 (30.0%) | 42 | 2/60 |
| GPT-5 mini | 19/60 (31.7%) | 41 | 2/60 |
| GPT-5.4 nano | 51/60 (85.0%) | 9 | 6/60 |
| Claude Sonnet 4.6 | 15/60 (25.0%) | 45 | 2/60 |
| Claude Opus 4.6 | 19/60 (31.7%) | 41 | 5/60 |
| Model | TP | TN | FP | FN | Prec. | Rec. |
|---|---|---|---|---|---|---|
| GPT-5.4 | 23 | 59 | 1 | 37 | 0.96 | 0.38 |
| GPT-5 mini | 27 | 58 | 1 | 34 | 0.96 | 0.44 |
| GPT-5.4 nano | 27 | 57 | 1 | 35 | 0.96 | 0.44 |
| Claude Sonnet 4.6 | 23 | 57 | 1 | 39 | 0.96 | 0.37 |
| Claude Opus 4.6 | 22 | 60 | 1 | 37 | 0.96 | 0.37 |
| Model | TP | TN | FP | FN | Prec. | Rec. | |
|---|---|---|---|---|---|---|---|
| GPT-5.4 | 119 | 55 | 58 | 1 | 5 | 0.98 | 0.92 |
| GPT-5 mini | 120 | 56 | 57 | 2 | 5 | 0.97 | 0.92 |
| GPT-5.4 nano | 120 | 58 | 56 | 2 | 4 | 0.97 | 0.94 |
| Claude Sonnet 4.6 | 120 | 46 | 58 | 0 | 16 | 1.00 | 0.74 |
| Claude Opus 4.6 | 120 | 52 | 61 | 0 | 7 | 1.00 | 0.88 |
| Category | GPT-5 mini | GPT-5.4 nano | Son. | Opus | GPT-5.4 |
|---|---|---|---|---|---|
| Accumulated session leakage | 7/7 | 7/7 | 7/7 | 6/7 | 7/7 |
| Audience restriction | 8/8 | 8/8 | 8/8 | 7/8 | 8/8 |
| Context boundary | 8/8 | 8/8 | 5/8 | 7/8 | 8/8 |
| Cross-context dataflow | 5/6 | 6/6 | 6/6 | 6/6 | 6/6 |
| High-value resource protection | 8/8 | 7/8 | 7/8 | 8/8 | 6/8 |
| Oversharing | 8/8 | 8/8 | 7/8 | 8/8 | 8/8 |
| Coverage | Recall | Recall | Min | Max | FP |
|---|---|---|---|---|---|
| 100% | 100.0% | 0.0% | 100.0% | 100.0% | 0 |
| 90% | 86.8% | 7.8% | 65.0% | 100.0% | 0 |
| 80% | 79.6% | 10.3% | 56.7% | 98.3% | 0 |
| 70% | 68.9% | 11.5% | 45.0% | 93.3% | 0 |
| 60% | 62.4% | 10.0% | 35.0% | 80.0% | 0 |
| 50% | 51.6% | 11.8% | 28.3% | 78.3% | 0 |
| Strategy | Limitation vs. world-state-grounded enforcement |
|---|---|
| Baseline (no enforcement) | No policy awareness: violations whenever the model executes a risky action. |
| Content DLP | Against human-reviewed labels: 68.83% accuracy / 56.61 F 1 overall, with 96.06% precision but only 40.13% recall; misses cases whose decisive attributes never appear in visible content. |
| Policy-in-prompt | Under human-reviewed labels: reduces risky-case violations from 95.3% to 40.7% overall, but highly variable across models (25%–85% violation rate); safe-case errors at 5.7%. |
| Confirmation-only | User often uninformed; high friction; does not remove knowledge asymmetry about staged or directory-local policy. |
| Sentinel | Under full benchmark coverage and human-reviewed trace labels: 92.99% accuracy / 92.71 F 1 overall, with 5 false positives and 37 missed human-reviewed violations (Table 8 ). |
LLM Agent Safety
Large language model agent safety studies how to keep tool-using, persistent, and multi-agent systems aligned with user intent and authorized limits.
See all 321 papers