{
  "schema_version": 1,
  "builder_plan": {
    "scenario": "An agent reads external documents or tool responses that may contain malicious instructions.",
    "change": "Replay attacks and legitimate lookalikes in an isolated copy of your agent workflow.",
    "baseline": "Your existing checks with the same tasks, permissions, and tool responses.",
    "steps": [
      "Locate the paper's implementation and check its license, model support, data needs, and hardware requirements. Stop here if you cannot obtain the required artifacts.",
      "Save a small set of representative product tasks and expected outcomes. Keep evaluation tasks out of any training or tuning, and choose quality and cost limits before running.",
      "Run the baseline and the proposed change on identical inputs. Keep other settings fixed and repeat paired runs to expose variation.",
      "Save per-task outputs, failures, timings, and all usage costs. Review regressions before expanding the test."
    ],
    "measure": "Successful attacks missed, legitimate actions blocked, detection delay, and review cost.",
    "decision": "Keep the change only if it meets your preselected quality and latency limits and improves the metric you care about after setup and operating costs. Otherwise retain the baseline. This is an exploration plan, not a validated recommendation."
  },
  "builder_review": null,
  "arxiv_id": "2608.30041",
  "title": "Reachability-Based Capability Confinement for LLM Agents under Indirect Prompt Injection",
  "summary": "SkillGuard replaces LLM-inference-based prompt-injection filters and content classifiers with a harness-level reference monitor that treats untrusted skill output as contamination and restricts the agent's future capabilities via a Skill Impact Graph and steerability signatures. It costs no additional model calls or token overhead, but requires authoring sound skill summaries, steerability signatures, and deployer-defined forbidden-state policies, plus integration into the agent harness. It can fail if skill summaries are incomplete or unsound, if policies misclassify which states are forbidden, or if fractional restriction parameters are tuned to preserve utility at the expense of residual attack paths, as the non-zero Slack attack success rates show.",
  "rationale": "The defense adds zero inference cost and works with API-based backends the reader already uses, but its security guarantees depend on hand-written per-skill summaries and policies whose quality must be validated on the reader's own tool set before production adoption.",
  "technique": "Reachability-based capability confinement for LLM agents",
  "family": "seguranca_e_guardrails",
  "recommendation": "testar",
  "published": "2026-08-30",
  "as_of": "2026-10-18",
  "editorial_status": "indexed",
  "source_url": "https://arxiv.org/abs/2608.30041",
  "independent_implementations": 1,
  "total_implementations": 2,
  "stars": 1,
  "citations": 0,
  "claims": [
    {
      "claim_id": "claim-01",
      "statement": "SkillGuard replaces LLM-inference-based prompt-injection filters and content classifiers with a harness-level reference monitor that treats untrusted skill output as contamination and restricts the agent's future capabilities via a Skill Impact Graph and steerability signatures. It costs no additional model calls or token overhead, but requires authoring sound skill summaries, steerability signatures, and deployer-defined forbidden-state policies, plus integration into the agent harness. It can fail if skill summaries are incomplete or unsound, if policies misclassify which states are forbidden, or if fractional restriction parameters are tuned to preserve utility at the expense of residual attack paths, as the non-zero Slack attack success rates show.",
      "basis": "inferred",
      "result": "",
      "baseline": "",
      "conditions": "",
      "source_url": "https://arxiv.org/abs/2608.30041",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "claim_id": "claim-02",
      "statement": "Under AgentDojo Tool Knowledge attacks, SkillGuard eliminates attack success on three of four suites for both backends and reduces it to 4.8% (Gemini) and 14.3% (Llama) on Slack, with no added model calls or token overhead.",
      "basis": "inferred",
      "result": "",
      "baseline": "",
      "conditions": "",
      "source_url": "https://arxiv.org/abs/2608.30041",
      "source_page": null,
      "source_excerpt": ""
    }
  ],
  "exposure_map": [
    {
      "dimension": "quality",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "compute",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "latency",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "operations",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "compatibility",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "security",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "data_and_training",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    },
    {
      "dimension": "reproducibility",
      "basis": "not_evaluated",
      "finding": "",
      "interpretation": "",
      "limitation": "",
      "next_check": "",
      "source_url": "",
      "source_page": null,
      "source_excerpt": ""
    }
  ],
  "risks": [],
  "minimum_test": [],
  "open_questions": [],
  "independent_tests": [],
  "lab_reproductions": [],
  "report_available": false,
  "validation_tier": "unknown",
  "evidence_tier": "unknown",
  "infrastructure_basis": "unknown",
  "equations": [
    {
      "anchor": "S3.Ex2",
      "label": "",
      "section": "3 Detailed Design of SkillGuard",
      "role": "proposed_method",
      "latex": "(R_{\\mathrm{rm}}^{*},T^{*}) =\\arg\\min_{R,T}W(R,T), \\\\ \\text{s.t.}\\quad\\operatorname{Reach}_{\\mathcal{G}(R,T)}(q)\\cap B=\\varnothing.",
      "mathml": "<math display=\"block\"><mrow><mrow><mo stretchy=\"false\">(</mo><msubsup><mi>R</mi><mi>rm</mi><mo>∗</mo></msubsup><mo>,</mo><msup><mi>T</mi><mo>∗</mo></msup><mo stretchy=\"false\">)</mo></mrow><mrow><mrow><mphantom></mphantom><mo>=</mo><mrow><mi>arg</mi><mo lspace=\"0.167em\">⁡</mo><mrow><munder><mi>min</mi><mrow><mi>R</mi><mo>,</mo><mi>T</mi></mrow></munder><mo lspace=\"0.167em\">⁡</mo><mrow><mi>W</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>R</mi><mo>,</mo><mi>T</mi><mo stretchy=\"false\">)</mo></mrow></mrow></mrow></mrow></mrow><mo>,</mo></mrow></mrow></math><math display=\"block\"><mrow><mrow><mtext>s.t.</mtext><mspace width=\"1.167em\"></mspace><mrow><mrow><mrow><msub><mi>Reach</mi><mrow><mi>𝒢</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>R</mi><mo>,</mo><mi>T</mi><mo stretchy=\"false\">)</mo></mrow></mrow></msub><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>q</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo>∩</mo><mi>B</mi></mrow><mo>=</mo><mi mathvariant=\"normal\">∅</mi></mrow></mrow><mo lspace=\"0em\">.</mo></mrow></math>",
      "context": "Let <math display=\"inline\"><mrow><mrow><mi>K</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>q</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo>⊆</mo><mi mathvariant=\"normal\">Σ</mi></mrow></math> denote the capabilities enabled in state <math display=\"inline\"><mi>q</mi></math>. A restriction consists of a removal set <math display=\"inline\"><mrow><mi>R</mi><mo>⊆</mo><mrow><mi>K</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>q</mi><mo stretchy=\"false\">)</mo></mrow></mrow></mrow></math> and a tightening map <math display=\"inline\"><mi>T</mi></math> over the retained capabilities. Applying <math display=\"inline\"><mrow><mo stretchy=\"false\">(</mo><mi>R</mi><mo>,</mo><mi>T</mi><mo stretchy=\"false\">)</mo></mrow></math> removes transitions associated with capabilities in <math display=\"inline\"><mi>R</mi></math> and restricts transitions that violate the tightened steerability signatures specified by <math display=\"inline\"><mi>T</mi></math>. Let <math display=\"inline\"><mrow><mi>𝒢</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>R</mi><mo>,</mo><mi>T</mi><mo stretchy=\"false\">)</mo></mrow></mrow></math> denote the resulting restricted SIG and let <math display=\"inline\"><mrow><mi>W</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>R</mi><mo>,</mo><mi>T</mi><mo stretchy=\"false\">)</mo></mrow></mrow></math> denote the cost of applying the restriction. SkillGuard selects the minimum-cost restriction",
      "headline": "",
      "explanation": "",
      "objective": "",
      "symbols": {},
      "evidence": "",
      "evidence_url": "",
      "source_url": ""
    },
    {
      "anchor": "S4.Ex11",
      "label": "",
      "section": "4 Workflow of SkillGuard",
      "role": "proposed_method",
      "latex": "\\min_{x\\in\\{0,1\\}^{K(q)}} \\sum_{c\\in K(q)}w(c)(1-x_{c}) \\\\ \\quad\\text{s.t.} \\sum_{c\\in C(\\pi)}(1-x_{c})\\geq 1,\\ \\ \\forall\\,\\pi\\in\\Pi(q,B).",
      "mathml": "<math display=\"block\"><mrow><munder><mi>min</mi><mrow><mi>x</mi><mo>∈</mo><msup><mrow><mo stretchy=\"false\">{</mo><mrow><mn>0</mn><mo>,</mo><mn>1</mn></mrow><mo stretchy=\"false\">}</mo></mrow><mrow><mi>K</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>q</mi><mo stretchy=\"false\">)</mo></mrow></mrow></msup></mrow></munder><mrow><mstyle displaystyle=\"true\"><munder><mo movablelimits=\"false\">∑</mo><mrow><mi>c</mi><mo>∈</mo><mrow><mi>K</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>q</mi><mo stretchy=\"false\">)</mo></mrow></mrow></mrow></munder></mstyle><mrow><mrow><mi>w</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>c</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><mrow><mn>1</mn><mo>−</mo><msub><mi>x</mi><mi>c</mi></msub></mrow><mo stretchy=\"false\">)</mo></mrow></mrow></mrow></mrow></math><math display=\"block\"><mrow><mtext>s.t.</mtext><mrow><mstyle displaystyle=\"true\"><mo movablelimits=\"false\">∑</mo></mstyle><msub><mrow></mrow><mrow><mi>c</mi><mo>∈</mo><mrow><mi>C</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>π</mi><mo stretchy=\"false\">)</mo></mrow></mrow></mrow></msub><mo stretchy=\"false\">(</mo><mn>1</mn><mo>−</mo><mi>x</mi><msub><mrow></mrow><mi>c</mi></msub><mo stretchy=\"false\">)</mo><mo>≥</mo><mn>1</mn><mo rspace=\"1.167em\">,</mo><mo rspace=\"0.337em\">∀</mo><mi>π</mi><mo>∈</mo><mi mathvariant=\"normal\">Π</mi><mo stretchy=\"false\">(</mo><mi>q</mi><mo>,</mo><mi>B</mi><mo stretchy=\"false\">)</mo><mo lspace=\"0em\">.</mo></mrow></mrow></math>",
      "context": "Binary Formulation. Each capability is represented by a binary decision variable, <math display=\"inline\"><mrow><msub><mi>x</mi><mi>c</mi></msub><mo>∈</mo><mrow><mo stretchy=\"false\">{</mo><mrow><mn>0</mn><mo>,</mo><mn>1</mn></mrow><mo stretchy=\"false\">}</mo></mrow></mrow></math>, where <math display=\"inline\"><mrow><msub><mi>x</mi><mi>c</mi></msub><mo>=</mo><mn>1</mn></mrow></math> denotes that capability <math display=\"inline\"><mi>c</mi></math> is retained and <math display=\"inline\"><mrow><msub><mi>x</mi><mi>c</mi></msub><mo>=</mo><mn>0</mn></mrow></math> denotes that it is removed. The minimum-cost capability cut is formulated as:",
      "headline": "",
      "explanation": "",
      "objective": "",
      "symbols": {},
      "evidence": "",
      "evidence_url": "",
      "source_url": ""
    },
    {
      "anchor": "S4.Ex12",
      "label": "",
      "section": "4 Workflow of SkillGuard",
      "role": "proposed_method",
      "latex": "\\min_{\\mathbf{y}}\\quad\\sum_{c\\in R_{\\mathrm{bin}}^{*}}w_{c}(y_{c}) \\\\ \\text{s.t.}\\quad\\operatorname{Reach}_{\\mathcal{G}[\\mathbf{y}]}(q)\\cap B=\\varnothing,\\quad y_{c}\\in[0,1],\\quad\\forall c\\in R^{*}_{\\mathrm{bin}}.",
      "mathml": "<math display=\"block\"><mrow><munder><mi>min</mi><mi>𝐲</mi></munder><mspace width=\"1.167em\"></mspace><mrow><mstyle displaystyle=\"true\"><munder><mo movablelimits=\"false\">∑</mo><mrow><mi>c</mi><mo>∈</mo><msubsup><mi>R</mi><mi>bin</mi><mo>∗</mo></msubsup></mrow></munder></mstyle><mrow><msub><mi>w</mi><mi>c</mi></msub><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><msub><mi>y</mi><mi>c</mi></msub><mo stretchy=\"false\">)</mo></mrow></mrow></mrow></mrow></math><math display=\"block\"><mrow><mrow><mtext>s.t.</mtext><mspace width=\"1.167em\"></mspace><mrow><mrow><mrow><msub><mi>Reach</mi><mrow><mi>𝒢</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">[</mo><mi>𝐲</mi><mo stretchy=\"false\">]</mo></mrow></mrow></msub><mo>⁡</mo><mrow><mo stretchy=\"false\">(</mo><mi>q</mi><mo stretchy=\"false\">)</mo></mrow></mrow><mo>∩</mo><mi>B</mi></mrow><mo>=</mo><mi mathvariant=\"normal\">∅</mi></mrow><mo rspace=\"1.167em\">,</mo><mrow><msub><mi>y</mi><mi>c</mi></msub><mo>∈</mo><mrow><mo stretchy=\"false\">[</mo><mrow><mn>0</mn><mo>,</mo><mn>1</mn></mrow><mo stretchy=\"false\">]</mo></mrow></mrow><mo rspace=\"1.167em\">,</mo><mrow><mrow><mo rspace=\"0.167em\">∀</mo><mi>c</mi></mrow><mo>∈</mo><msubsup><mi>R</mi><mi>bin</mi><mo>∗</mo></msubsup></mrow></mrow><mo lspace=\"0em\">.</mo></mrow></math>",
      "context": "Given the tighting vector <math display=\"inline\"><mi>𝐲</mi></math>, <math display=\"inline\"><mrow><mi>𝒢</mi><mo>⁡</mo><mrow><mo stretchy=\"false\">[</mo><mi>𝐲</mi><mo stretchy=\"false\">]</mo></mrow></mrow></math> denotes the restricted SIG obtained by removing transitions whose parameters violate the tightened envelopes <math display=\"inline\"><mrow><msub><mi>E</mi><mi>c</mi></msub><mo lspace=\"0em\" rspace=\"0em\">​</mo><mrow><mo stretchy=\"false\">(</mo><msub><mi>y</mi><mi>c</mi></msub><mo stretchy=\"false\">)</mo></mrow></mrow></math>. The optimal fractional restriction vector <math display=\"inline\"><msup><mi>𝐲</mi><mo>∗</mo></msup></math> is obtained via:",
      "headline": "",
      "explanation": "",
      "objective": "",
      "symbols": {},
      "evidence": "",
      "evidence_url": "",
      "source_url": ""
    }
  ],
  "equations_status": "selected",
  "core_kind": "formula",
  "equations_fetched_at": "2026-09-22",
  "equations_source_url": "",
  "equations_source_sha256": "",
  "exposures_reviewed_at": "",
  "exposures_source_sha256": ""
}