PROVISO: Provenance-Informed Action Selection for Secure LLM Agents
Organizations: University of Central Florida · Independent Researcher · University of Tennessee, Knoxville
Abstract
LLM agents act on the external world through tools and third-party skills, so a single executed action can cause irreversible harm. Existing defenses judge a proposed action without tracking whether its content comes from the user or from external sources such as tool outputs, and they judge it in isolation rather than against an available alternative, which forces a trade-off between security and utility. We present PROVISO, a controller that decides which action to commit after the agent proposes an action and before it is executed. PROVISO encodes trusted observations, external observations, the proposed action, and an alternative into provenance-typed memory, relates them through role-specific queries, and commits the action with the highest calibrated value learned from outcomes. On four agent security tasks spanning the agent lifecycle, no baseline exceeds PROVISO in both security and utility. PROVISO improves F1 over the strongest baseline by 13.84 points on SkillsBench and by 7.07 points on ToolSafe, and it reaches 88-99 F1 on three additional skill detection benchmarks.
Figures & tables
| Method | Prec | Recall | F1 | FPR |
|---|---|---|---|---|
| PROVISO | 89.21 | 82.67 | 85.81 | 1.00 |
| SkillGate | 83.33 | 63.33 | 71.97 | 1.27 |
| Cisco semantic | 56.49 | 98.67 | 71.84 | 7.60 |
| Sentry semantic | 54.74 | 100.00 | 70.75 | 8.27 |
| SkillSpector semantic | 41.69 | 98.67 | 58.61 | 13.80 |
| Sentry static | 48.44 | 72.67 | 58.13 | 7.73 |
| Method | H&R | Benign completion |
|---|---|---|
| PROVISO | 0.00 | 100.00 |
| AGrail | 2.65 | 43.75 |
| MCIP | 14.27 | 78.75 |
| GuardAgent | 19.66 | 72.50 |
| WildGuard | 20.42 | 82.50 |
| AgentSpec | 20.64 | 80.00 |
| Method | ACC | F1 | Recall |
|---|---|---|---|
| PROVISO | 99.15 | 99.12 | 99.71 |
| TS-Guard | 92.50 | 92.05 | 90.29 |
| MCIP | 60.11 | 64.84 | 76.47 |
| AgentSpec | 71.00 | 62.79 | 50.88 |
| ShieldAgent | 58.42 | 58.47 | 60.88 |
| WildGuard | 67.33 | 56.00 | 43.24 |
| Benign | Utility | Targeted | |
|---|---|---|---|
| Method | utility | w. attack | ASR |
| PROVISO | 87.63 | 85.41 | 0.28 |
| SecAlign | 88.66 | 83.35 | 3.46 |
| BIPIA | 84.54 | 81.28 | 0.20 |
| DRIFT | 84.54 | 81.04 | 0.32 |
| IPIGuard | 81.44 | 78.82 | 2.58 |
| Benchmark | Prec | Recall | F1 | FPR |
|---|---|---|---|---|
| SkillsBench | 89.21 | 82.67 | 85.81 | 1.00 |
| MalSkillBench | 99.26 | 98.00 | 98.62 | 0.73 |
| SkillVetBench | 95.79 | 91.00 | 93.33 | 4.00 |
| MaliciousSkillBench | 92.99 | 83.79 | 88.15 | 9.72 |
Appendix figures & tables22 assets
Supplementary material from the paper’s appendix.
Appendix
| Benchmark | Setting | Trusted obs. | External obs. | Proposed | Alternative | Native outcome |
|---|---|---|---|---|---|---|
| Skill benchmarks † | Adm. | Declared skill purpose | Package instructions and code | Install the package | Reject it | Malicious label |
| ANCHOR | Adm. | Task request | Task setting | Execute the requested effects | Refuse and return a safety assessment | H&R; benign completion |
| ToolSafe | Adm. | Task, tool registry, and schemas | Interaction history and tool returns | Proposed tool call | Block the call and return feedback | Call severity label |
| AgentDojo | Sel. | User request | None before commitment (fixed stage description) | Complete trajectory of the deployed agent | Complete recovery trajectory | Utility and attack success |
| Benchmark | Pos. | Neg. | Split |
| SkillsBench | 150 | 1,500 | 5-fold |
| MalSkillBench | 3,944 | 4,000 | 5-fold |
| SkillVetBench | 100 | 100 | 5-fold |
| MaliciousSkillB. | 839 | 545 | Released split |
| ANCHOR (test) | 300 | 80 | 936/176/380 |
| ToolSafe (test) | 340 | 367 | 5,769/706/707 |
| Method | Mechanism | Trained |
|---|---|---|
| Malicious skill detection | ||
| SkillGate | Regex prefilter and LLM judge | |
| Static scanners (3) | Static (and behavioral) rules | |
| Semantic scanners (3) | LLM-based semantic analysis | |
| SkillFortify | Static analysis | |
| Agent misuse and unsafe tool invocation | ||
| Benchmark | Batch | Epochs | Decay | Threshold |
|---|---|---|---|---|
| SkillsBench | 64 | 30 | .02 | Dev. F1 |
| MalSkillBench | 16 | 12 | .02 | Dev. F1 |
| SkillVetBench | 16 | 30 | .01 | Fixed .7 |
| MaliciousSkillB. | 32 | 8 | .01 | Dev. macro-F1 |
| ANCHOR | 64 | 20 | .01 | Dev. recall |
| ToolSafe | 128 | 36 | .01 | Dev. benign pass |
| Backbone | TP/FN/FP/TN | F1 | Recall | Benign FPR | Requests |
|---|---|---|---|---|---|
| Granite-3.3-8B | 293/7/0/80 | 98.82 | 97.67 | 0.00 | 687 |
| Shared-core readout | Prior | Tasks /417 | Scen. /139 | Calls |
|---|---|---|---|---|
| Action contrast | 417/417 | 237 | 49 | 20,355 |
| Conservative corrective | 417/417 | 237 | 49 | 20,355 |
| Finer evidence | 417/417 | 237 | 49 | 20,355 |
| Recoverable relation | 417/417 | 237 | 49 | 20,355 |
| Method | TP/FN/FP/TN |
|---|---|
| PROVISO | 339/1/5/362 |
| TS-Guard | 307/33/20/347 |
| MCIP | 260/80/202/165 |
| AgentSpec | 173/167/38/329 |
| ShieldAgent | 207/133/161/206 |
| WildGuard | 147/193/38/329 |
| Method | TP/FN/FP/TN |
|---|---|
| SkillsBench | |
| PROVISO | 124/26/15/1,485 |
| SkillGate | 95/55/19/1,481 |
| Cisco semantic | 148/2/114/1,386 |
| Sentry semantic | 150/0/124/1,376 |
| SkillSpector semantic | 148/2/207/1,293 |
| Baseline | Gain | 95% CI | Holm |
| ToolSafe | |||
| TS-Guard | +7.07 | [4.29, 10.16] | .001 |
| MCIP | +34.28 | [30.49, 38.15] | .001 |
| AgentSpec | +36.33 | [31.09, 41.75] | .001 |
| ShieldAgent | +40.65 | [35.64, 46.11] | .001 |
| WildGuard | +43.12 | [36.18, 50.54] | .001 |
| Intervention | Control | Gain | 95% CI |
|---|---|---|---|
| Evidence selection (package F1; full 85.81) | |||
| No selector supervision | 69.08 | +16.73 | [10.22,24.42] |
| No local memory, no selector loss | 59.38 | +26.44 | [18.43,36.60] |
| Permuted retention, fixed scorer | 64.35 | +21.47 | [13.09,29.47] |
| Query reasoning (package F1; full 85.81) | |||
| Matched dense readout | 48.62 | +37.19 | [29.04,47.54] |
| Control | F1 | Gain | 95% CI |
|---|---|---|---|
| PROVISO | 85.81 | – | – |
| No selector supervision | 69.08 | +16.73 | [10.22, 24.42] |
| No local memory or selector loss | 59.38 | +26.44 | [18.43, 36.60] |
| All-window memory | 81.19 | +4.63 | [0.97, 8.98] |
| Dense expert update | 86.49 | 0.67 | [ 2.98, 1.66] |
| No role embeddings | 85.32 | +0.49 | [ 2.91, 4.30] |
| Content policy | Gain (pp) | Paired 95% CI | Holm |
|---|---|---|---|
| Selected: retained | +21.47 | [13.09,29.47] | .00032 |
| Selected: restore four | +21.56 | [13.22,29.48] | .00032 |
| Five-fit: retained | +17.41 | [9.90,25.43] | .00032 |
| Five-fit: restore four | +17.26 | [9.83,25.18] | .00032 |
| Effect | Gain | Joint 95% CI | Holm |
|---|---|---|---|
| Full-retrieval utility | +9.94 | [8.43,11.41] | .00006 |
| Conflict–aligned interaction | +13.15 | [10.96,15.31] | .00006 |
| Selection | JSU /2,516 | choices |
|---|---|---|
| Always acquired | 2,066 | 0 |
| Always acquired | 2,034 | 2,613 |
| PROVISO | 2,147 | 1,270 |
| Proposer | ToolSafe | AgentDojo calls |
|---|---|---|
| Granite-3.3-8B | 98.98 | 97.73 |
| gpt-oss-20B | 99.12 | 96.55 |
| Phi-4 | 98.98 | 97.73 |
| Mistral-7B | 98.53 | 97.73 |
| Muse-Glimmer-30B | 99.27 | 97.73 |
| Backbone | F1 | Mal. recall | Benign FPR | Replay err. |
|---|---|---|---|---|
| Granite-3.3-8B | 81.43 | 83.33 | 2.13 | 0 |
| Mistral-7B | 81.70 | 83.33 | 2.07 | 0 |
| Muse-Glimmer-30B | 81.41 | 84.67 | 2.33 | 0 |
| Proposer | F1 | Recall | Retention | Brier |
|---|---|---|---|---|
| Granite-3.3-8B | 99.12 | 99.71 | 98.64 | .00966 |
| Phi-4 | 99.12 | 99.71 | 98.64 | .00961 |
| Method | F1 | Recall | Benign FPR | TP/FN/FP/TN |
|---|---|---|---|---|
| SkillGate | 71.97 | 63.33 | 1.27 | 95/55/19/1481 |
| PROVISO, independent fine-view fit | 84.39 | 84.67 | 1.60 | 127/23/24/1476 |
| Execution | Mean risk | Benign completion | Request starts |
|---|---|---|---|
| Unguarded Granite-3.3-8B | 30.777 | 48/80 (60.00%) | 1,558 |
| PROVISO + Granite-3.3-8B | 0.717 | 48/80 (60.00%) | 807 |
| Method | F1 | Recall | Benign FPR | TP/FN/FP/TN |
|---|---|---|---|---|
| SkillGate | 71.97 | 63.33 | 1.27 | 95/55/19/1481 |
| PROVISO | 84.95 | 84.67 | 1.47 | 127/23/22/1478 |
LLM Agent Security
Large language model agent security studies attacks and safeguards for systems that plan, use tools, retain memory, and act across applications.
See all 332 papers