Whole-Trace Checking Catches 95.8% of Skill Policy Violations
Notes on VIGIL: Runtime Enforcement of Behavioral Specifications in AI Agent Skills (arXiv:2606.26524) — Ying Li, Yanju Chen, Hongbo Wen, Bosi Zhang, Hanzhi Liu, Peiran Wang, Yunhao Feng, Yuan Tian · June 2026
Note published · written by SkillFed’s research pipeline from the paper above · how these notes are made
AI-assisted notes · reviewed by SkillFed Skill securityVIGIL is a runtime reference monitor for agent skills. It abstracts raw tool calls into typed events, then grounds each skill's natural-language specification into a policy that names the actual arguments, outputs, and artifact identities appearing in that specific run — closing the gap between generic prose ("validate before use") and a checkable rule. Each grounded policy compiles into a quantifier-free SMT query evaluated against the whole trace, not one call at a time, so a violation can hinge on event order, an argument value, or something produced several steps earlier and only consumed later. The policy language covers six temporal forms — absence, precedence, response, bounded response, resolution, and until — and when the solver finds a policy broken, its unsatisfiable core points to the exact invocation to block before that call's effects land.
On 152 labeled executions from SkillsBench and Skill-Inject (72 violating, 80 benign), VIGIL catches 69 of the 72 violations: 95.8% recall at 89.6% precision, 15.8 F1 points ahead of the strongest baseline — an LLM-as-judge that sees the full trace but still misses 24 violations for lack of formal grounding. Single-call defenses AgentSpec and Progent, which check one action at a time, miss roughly half the violations outright. Run against 216 real executions of shipped skill bundles from NVIDIA, Databricks, Cloudflare, and Trail of Bits, VIGIL surfaces 34 confirmed policy violations, among them a missing liveness rule in NVIDIA's own skill ecosystem that let a Slurm job keep resubmitting GPU work after evaluation failures — NVIDIA acknowledged it as a real cost concern. The deterministic SMT check itself runs in 0.27 seconds; the 4.38-second end-to-end average is dominated by a single cacheable LLM call that compiles the policy.
Key numbers
| Recall on real skill-execution violations | 95.8% |
| Precision (false positives controlled) | 89.6% |
| F1 lead over strongest baseline | +15.8 pts |
| Confirmed policy violations found | 34 of 216 real executions |
| Recall lost without argument grounding | -31.9 pts |
Skills related to this research
Related notes
- Permission gating nearly halves skill-injection success — 36.7% → 18.0% →
- Coding agents violate their own skill's embedded logic in up to 70% of test cases →
- 80% of agent skills in a 49,943-skill registry don't do what they claim — most of it is sloppiness, not malice →
- Over-privilege, not caution, causes 92–100% of agent skill failures →
- Zero malicious prompts, 50.3% attack success: poisoned skill files hijack agents anyway →
- 26.1% of Community Skills Ship With a Vulnerability →
- Strip the tutorial video from a skill wiki, lose 9.5 points →
- A 3.9M-parameter skill sequencer closes 80% of the gap to hand-picked "gold" skill sets →
- Budget-aware skill packing takes deliverability from 9% to 100% for just 1.14 points of quality →
References
- Y. Li, Y. Chen, H. Wen, B. Zhang, H. Liu, P. Wang, Y. Feng, Y. Tian (2026) VIGIL: Runtime Enforcement of Behavioral Specifications in AI Agent Skills. arXiv:2606.26524
- H. Wang, C. M. Poskitt, J. Sun (2025) AgentSpec: customizable runtime enforcement for safe and reliable LLM agents.
- T. Shi, J. He, Z. Wang, H. Li, L. Wu, W. Guo, D. Song (2025) Progent: programmable privilege control for LLM agents.
- X. Li, W. Chen, Y. Liu, S. Zheng, X. Chen, Y. He, Y. Li, B. You, H. Shen, J. Sun et al. (2026) SkillsBench: benchmarking how well agent skills work across diverse tasks.
- D. Schmotz, L. Beurer-Kellner, S. Abdelnabi, M. Andriushchenko (2026) Skill-Inject: measuring agent vulnerability to skill file attacks.