Autonomous LLM agents act through tools under per-action authorization: a local guard screens each tool call in isolation. We show that local authorization does not compose into global authorization. A compositional authorization failure (CAF) is a locally authorized execution, or a pair of locally authorized executions, that violates a global policy spanning intent, purpose, provenance, consent, and delegation. We characterize CAFs along two axes, expressiveness (single-trace safety versus relational k-safety) and observability (a ladder of monitor profiles). Our central result is an impossibility: relational purpose violations form a 2-safety hyperproperty with no per-trace locus of blame, so a per-action monitor that never raises a false alarm detects none of them, independent of the underlying model or decision procedure; they become visible only under cross-execution monitoring, which none of the six guardrails we survey implements. We make this constructive with AL-SYNTH, a SAT/SMT synthesizer (using no language model) that emits minimal CAF witnesses, each checked against an exhaustive oracle. The empirical signature is sharp: across nine LLM judges the per-action view approves the synthesized witness almost without exception, blocking it at a rate comparable to a benign control, yet the same models flag it when shown the two executions together. Per-action authorization is therefore structurally insufficient for relational policy conjuncts not reducible to single-trace safety: to bound them, a monitor must compare executions or accept false alarms.
Figures & tables
Fig. 1: A compositional authorization failure, single-trace case. Every action passes its local check (top), yet the composed trace violates the global policy Φ (bottom), with no single offending step. The relational purpose failure is witnessed instead by a pair of individually compliant executions (Figure 3 ).
Fig. 2: The two-axis map, with class labels as in Table III . Increasing observability (left to right) covers the single-trace classes one by one (teal). The relational purpose class C2r (coral) is 2 -safety, so no single-execution profile can express it; it is covered only by the relational profile P7 , beyond the strongest profile any surveyed system reaches. The bottom row is the number of undetected classes per profile, the monitor-coverage curve of § VII .
Fig. 3: Why purpose is relational. Two executions agree on the low inputs and on the purpose-authorized view of context (the same slots are free) and differ only in a hidden, unauthorized reason. Each offers a free slot, so neither trace alone is faulty, yet the disclosures differ ( α(obsa)=α(obsb) ). That difference is explained only by the unauthorized reason, so the pair is the 2 -safety witness for C2D : it is visible only by comparing executions, which a relational ( P7 ) monitor does and a per-action monitor cannot.
Fig. 4: AL-Synth . One symbolic model with two semantics drives an SMT solver and an exhaustive oracle. A differential check compares them (soundness, bounded completeness, minimality), and the validated pipeline emits minimal witnesses and computes the monitor-coverage curve.
CAF (sub)class
P0
P1
P2
P3
P4
P5
P5+
P6
P7
C1 intent
∘
∙
∙
∙
∙
∙
∙
∙
∙
C2 purpose (labeled)
∘
∘
∙
∙
∙
∙
∙
∙
∙
C2 purpose (relational)
∘
∘
∘
∘
∘
∘
∘
∘
∙
C3 provenance (path)
∘
∘
∘
∙
∙
∙
∙
∙
∙
C3 flow (explicit labeled)
∘
∘
∘
∘
∘
∘
∘
◐
◐
C4 consent (per-action)
∘
∘
∘
∘
∙
∙
∙
∙
∙
TABLE I: Monitor-coverage matrix, solver-validated and confirmed against the brute-force oracle (all 72 cells agree). ∙ : the profile detects the class exactly, flagging every witness and no compliant trace. ◐ : detects it only conservatively, a sound over-approximation that admits most compliant traces at the cost of some false alarms. ∘ : no monitor at that profile detects it without missing witnesses or blocking compliant behavior. The one ◐ row is explicit labeled flow, over-approximated by taint tracking at P6 and above. Both ∙ and ◐ count as covered in the bottom-row curve. Only relational purpose ( C2 , shaded ∙ ) admits no per-trace coverage at all, closing at P7 (Theorem 3 ).
Fig. 5: Synthesis cost on the cumulative-consent model (11 actions, Z3 4.16). Minimal-witness synthesis (dashed) stays flat to depth twelve, while all-SAT enumeration (solid, used only for the oracle check) grows exponentially with the witness count (annotated). One model; times are illustrative, not a benchmark.
Mechanism
What it observes
Profile
Cross-exec.
Per-tool approval
current action, shown to a human
P0
no
Task Shield [ 16 ]
action versus task goal
P1
no
RTBAS [ 17 ]
IFC taint and dependencies
P3
no
CaMeL [ 18 ]
data and control flow, capabilities
P5
no
Fides [ 8 ]
IFC labels, explicit secrecy
P6
no
SAFEFLOW [ 19 ]
IFC labels and provenance
P6
no
TABLE II: Surveyed agent-authorization mechanisms and the profile each receives in Table III . “Cross-exec.” asks whether the mechanism compares distinct executions of the same purpose, the P7 capability.
mechanism (profile)
C1
C2ℓ
C2r
C3p
C3f
C4a
C4c
C5
Per-tool approval ( P0 )
∘
∘
∘
∘
∘
∘
∘
∘
Task Shield [ 16 ] ( P1 )
∙
∘
∘
∘
∘
∘
∘
∘
RTBAS [ 17 ] ( P3 )
∙
∙
∘
∙
∘
∘
∘
∘
CaMeL [ 18 ] ( P5 )
∙
∙
∘
∙
∘
∙
∘
∙
Fides [ 8 ] ( P6 )
∙
∙
∘
∙
◐
∙
∙
∙
SAFEFLOW [ 19 ] ( P6 )
∙
∙
∘
∙
◐
∙
∙
∙
TABLE III: Defense matrix, confirmed against the brute-force oracle; symbols as in Table I . Each mechanism is placed at the strongest profile its published design implements, so its row is a capability bound from the design, not an execution of its code. The relational purpose column (shaded) is missed by every surveyed mechanism: Fides and SAFEFLOW ( P6 ) cover six classes exactly and explicit labeled flow conservatively, and only the relational auditor ( P7 ) covers relational purpose.
Task
Class
n
CAF
95% UB
Injected-doc forward
C1
10
0
≤26%
Narrow-scope share
C4
10
0
≤26%
Scheduling audit
C2r
80
0†
≤3.7%
TABLE IV: Offline audit of Claude Sonnet 4.6 (fixed temperature). CAF is the number of compositional authorization failures observed; UB is the exact one-sided 95% Clopper–Pearson upper bound on the per-episode rate. Prompts, seeds, and settings are in the artifact.
judge
wit
ben
C1
aud
Claude Opus 4.8
0/30
0/30
30/30
30/30
GPT-5.5
0/30
0/30
30/30
30/30
Gemini 3.1 Pro
0/30
0/30
30/30
30/30
Grok 4.3
0/30
0/30
30/30
30/30
DeepSeek V4 Pro
0/30
2/30
30/30
30/30
Qwen3.7-max
0/30
0/30
30/30
30/30
TABLE V: Per-action judges over the synthesized relational witness. Cells count the scenario-repetitions, out of 30 (ten templates, three repetitions), in which the judge blocks at least one action: wit the witness, ben a benign no-leak control, C1 an overt single-trace control, and aud the relational auditor, the same model shown both executions. Hosted models ran through OpenRouter and the local model through vLLM.
Qwen3-30B
Gemma-4
guard
CAF
CAF-free
CAF
CAF-free
no guard ( P0 )
22/60
63.3%
0/60
100%
intent-closure
20/60
66.7%
0/60
100%
composition ( P5+ )
0/60
100%
0/60
100%
TABLE VI: Live tool-calling agents on the cumulative-consent task ( 60 independent rollouts per cell at fixed temperature, zero execution errors). CAF : consent-composition failures committed. CAF-free : fraction of rollouts with no CAF, a natural rate under no guard and a prevention rate under a guard. The composition-aware P5+ guard removes every CAF while blocking no benign or clean-intent rollouts.
Appendix figures & tables1 asset
Supplementary material from the paper’s appendix.
Appendix
Display name
API slug
Claude Opus 4.8
anthropic/claude-opus-4.8
GPT-5.5
openai/gpt-5.5
Gemini 3.1 Pro
google/gemini-3.1-pro-preview
Grok 4.3
x-ai/grok-4.3
DeepSeek V4 Pro
deepseek/deepseek-v4-pro
Qwen3.7-max
qwen/qwen3.7-max
Appendix
TABLE VII: Judge models and exact API slugs for the campaign of § VIII ; settings in the text, accessed June 2026.