Scope discipline mechanism. Every idea that is not on the scope lock in
SHIP_LINE.md goes here. Nothing in this file
is currently being built. The act of writing it down is the release valve — it
lets the main checklist execute without ideas rotting in working memory.
Rule. Only three ways an item leaves this file:
- Post-ship (after v1.0.0), promoted to the next cycle's checklist
- Mid-checklist swap, only if it replaces something already in scope with explicit justification written here
- Rejected, moved to the Rejected section with one line of reasoning
These are strong enough to be considered for swap-in if a planned module under-delivers. Do not just add them without pulling something else.
- Code-completion injection module. Copilot-style attacks where malicious code lives in imported repos or documentation. Greshake showed this in 2023. Not agentic (no tool loop, no planning) so it may belong in a sibling project rather than Agent Shield. Decide before considering.
- Multimodal image-hidden instruction smuggling.
env/currently treats images as environment payloads only. Extend to cover cross-modality instruction smuggling (text hidden in image that the vision model interprets as instruction). 5 to 10 tasks. - User-driven copy-paste attacks. Social engineering where the user
pastes poisoned content unknowingly. Bridge into
psych/. New adversary level needed (L0.5: influences user behavior upstream of agent). - Cross-lingual injection. Chinese, Hindi, Russian payloads. Tests whether English-trained safety filters generalize. One suite per module.
- Constitutional AI as fifth defense baseline. Current 3 defenses are spotlighting, LLM judge, tool arg constraints. Adding Bai et al. 2022 self-critique would give coverage of the "model defends itself" class of defenses that nothing else tests.
Not eval-module work, so it doesn't belong on AGENT_SHIELD_TODO.md — repo
build/tooling hygiene found during an engineering audit. Full evidence in
docs/audit_2026-08-25.md.
- CI has been red since at least 2026-08-08 (5+ consecutive pushes,
confirmed via
gh run list/gh run view --log). Same 9rufferrors unchanged the whole time, 5 auto-fixable. Fixed 2026-08-25:ruff check .now exits 0,pytestunaffected (415 passed). -
make lint's mypy half is not in.github/workflows/ci.yml— CI only ranruff check .+pytest. Fixed 2026-08-25:mypystep added toci.yml. Note this step itself still fails — 130 pre-existing errors across 13 files, including real product code (agent_shield/runtime/ proof_metrics.py,agent_shield/tr_holdout.py,agent_shield/external_corpus/dedupe.py). Fixing those is the next item. - mypy
filesexcludesagent_shield/itself (the shipped runtime perimeter package) andpsych/ exfil/ drift/ defenses/ scripts/ report_generator.py risk_registry.py. Onlyevals/inputs/tools/memoryget strict typing today. Decide scope, extend, fix what surfaces. - No dependency or secret scanning: no
dependabot.yml, no pre-commit framework, nopip-audit/bandit/gitleaks. Addpip-auditas a real (Python-aware) dependency-CVE check plusdependabot.ymlforpip+github-actions. - Confirm
.env.exampleis placeholder-only. One plausible-looking STRIDE finding from the Ruflo/Claude-Flow audit run flagged it CRITICAL; likely a filename-pattern false positive against the standard tracked- template convention, but unverified — audit session's sandbox blocked reading the file to check. - Ruflo/Claude-Flow
security scan/cve/threatssubcommands are inert on this repo — verified via canary file (hardcoded AWS + Anthropic keys,os.system,subprocess(shell=True),eval()all scored zero issues). Do not route security scanning through them again; usepip-audit/ real Python tooling instead.
env/module — Deferred because six modules are enough for v1.0.0 and environment payloads would add PDF, image, calendar, and email plumbing. Source:AGENT_SHIELD_TODO.mdsection 8.multiagent/module — Deferred because peer orchestration adds a second agent loop design after the single agent surfaces already support the paper claim. Source:AGENT_SHIELD_TODO.mdsection 10.- LLM judge filter defense — Deferred because v1.0.0 already has scorer calibration work and a judge would need its own validation set. Source:
AGENT_SHIELD_TODO.mdsection 12. - Tool argument constraints defense — Deferred because v1.0.0 only needs one defense, and spotlighting applies to both
inputs/andpsychwithout tool schema changes. Source:AGENT_SHIELD_TODO.mdsection 12. - 95% CI on every module — Deferred because
inputs/atn=20is the anchor check and the other modules can ship point estimates in v1.0.0. Source:AGENT_SHIELD_TODO.mdsection 13. - Full eight model coverage — Deferred because four models cover Anthropic, local Ollama, Groq, and Gemini for v1.0.0 without turning the sprint into provider operations. Source:
AGENT_SHIELD_TODO.mdsection 13. env/andmultiagent/result rows — Deferred because those modules do not ship at v1.0.0, so their result rows cannot be required for release. Source:AGENT_SHIELD_TODO.mdsections 8 and 10.- Job application batch — Deferred because v1.0.0 needs the research artifact first; applications resume after the four model evidence line is stable. Source:
AGENT_SHIELD_TODO.mdsection 16. - Fellowships — Deferred because fellowship materials depend on the shipped artifact and paper story. Source:
AGENT_SHIELD_TODO.mdsection 18. - Workshop submission after arxiv — Deferred because v1.0.0 ships the workshop length draft and release bundle, while submission packaging can follow in v1.1. Source:
AGENT_SHIELD_TODO.mdsection 14.
Project relevant ideas that do not belong on the v1.0.0 checklist. Do not touch before v1.0.0.
- DPO/LoRA preference tuning spike (2026-08-24, commit
9b86e32). Ran end to end onHuggingFaceTB/SmolLM2-135M-Instruct, LoRA rank 8 on the attention projections, DPO at beta 0.1, lr 5e-5, six epochs, 40 train and 12 held out pairs. Code:scripts/dpo_lora_spike.pyplusscripts/dpo_pairs.py; run artifacts are gitignored and regenerate in under a minute viauv run --no-project scripts/dpo_lora_spike.py --axis verbosity. Held out result on the verbosity axis: implicit DPO reward margin+1.05with 12 of 12 positive, mean generation length32.5 -> 29.8,answer_key_rate0.750 -> 0.833, zero degenerate outputs, 4 of 12 greedy generations changed. The preference signal generalizes while behavior moves only slightly. Not an Agent Shield security result and deliberately absent fromRESULTS.md: there is no Inspect task or eval file behind it and it reports no ASR, TR, or UUA, so it does not satisfy the reproducibility row schema and must not enter the paper citation table. Two decode time findings worth keeping: generating while the model is still intrain()mode aftertrainer.train()leaves gradient checkpointing on, forcesuse_cache=False, and degenerates greedy decoding into one token then endless newlines (reproduces on the untrained base model, so it is not a training effect); and reporting stripped text hid it by rendering forty newline tokens as the string'The'. Both are now guarded in code. - Unity sim: red team training environment for agents where human attackers and agent defenders play rounds
-
dos/module — adversarial DoS attacks against agents. Currently tracked as a metric in v1 threat model, not mitigated. Post-sprint this could be its own study. - Credibility hardening + local runtime perimeter (“AdBlock for agents”).
Track A credibility + Track B MVP (guard / MCP catalog proxy / proof) landed
2026-07-31. ROADMAP updated: optional local perimeter, not hosted product.
Company wiring:
docs/company_agent_adapter.md. Still open: Chrome/Cursor Phase 5, Loom URL, blog publish, Gemini tools n=20. - Runtime aggressive miss corpus (research plan ready).
Design:
docs/runtime_aggressive_testing_research.md. First widening landed: cross-purpose only — evidence indocs/mcp_cross_purpose_promotion.md. Still open: expand attributed third-party OpenAPI/MCP docs beyond the gate corpus (now n≥400 in-repo; prefer Apache/MIT third-party next); schema screening still shadow-only. - Psychology × cybersecurity research (per improvement).
Findings package under
docs/research_packages/2026-07-31_research_findings/. - External benchmark foundation (Phase 1 importer) — package parked at
docs/research_packages/2026-07-31_external_benchmark/. Landed:agent_shield.external_corpus+agent-shield-corpus(doronp + Evalyzeattacks.jsononly). Mutation/adaptive/holdout lanes still open. - Moat experiments (from originality audit 2026-07-31). See
docs/DIFFERENTIATION.md: TR-v2 + human agreement; TR–ASR joint plot; false-disclosure / alert fatigue study; cross-lingual TR; MCP-native TR on live servers (after poweredtools/n=20).
From docs/originality_audit_2026-07-31.md:
- Another AgentDojo-style banking/Slack/travel injection ASR suite → AgentDojo
- Standalone MCP tool-poisoning ASR benchmark → MCPTox (AAAI 2026)
- Memory + backdoor + defenses matrix across many backbones → ASB
- Transcript → safe/unsafe risk-awareness judge suite → R-Judge / AgentSafetyBench
- MCP static scanner / honeytoken deception layer product → mcp-scan / arXiv AgentShield (2605.11026)
From the 25-question review of THREAT_MODEL.md v1. Pick 3 per weekly review, sit with them, revise doc.
- Q3: Is operator reputation a measurable asset or narrative? Remove or measure.
- Q4: Do adversary levels need a resource axis (compute, not just authorship)?
- Q6: Does user-driven injection collapse L1 into L2? Resolve cleanly.
- Q7: Is Repudiation really out of scope or is that a punt?
- Q10: What's the causal identification for Middle A outcome (defense-caused vs task-difficulty)?
- Q11: Utility drop threshold for "defender-mounted DoS" — pick a number.
- Q13: "Detection of what?" — injection content, attacker goal, or unexpected tool call. Specify.
- Q15: Sample size for defense-conditioned ASR matrix 95% CI at ±5%. Compute before the first cross-model sweep.
- Q21: Where did 30% recall / 10% FP come from for behavior-baseline detector? Ground or revise.
- Q23: What specific finding breaks this doc and forces v2 from scratch?
- Q24: Transparency scorer paraphrase coverage. Sonnet called one prompt
an "attempt to manipulate" on 2026-05-05, but
inputs/TR stayed 0 because the phrase list only matches narrower variants. Decide before larger sweeps whether phrase matching is intentionally strict or should move to a judge.
Items added here were never in BACKLOG — they were discussed and moved straight to AGENT_SHIELD_TODO.md by explicit decision. Logged here for auditability.
- Human-readable reporting layer (added to
AGENT_SHIELD_TODO.md§13.5) - CIA Triad check (added to
CLAUDE.mdsession protocol +AGENT_SHIELD_TODO.md§13.6) — Fact-check and firewall layer on every user query before any action. Checks Confidentiality, Integrity, and Availability in plain English so the output is readable with or without a security background. Agent-level check is live inCLAUDE.md; code-level CIA mapping inrisk_registry.pyand report output are on the build checklist. - Risk review system (added to
AGENT_SHIELD_TODO.md§13.6 +CLAUDE.md) — Session-level and eval-level LOW/MEDIUM/HIGH risk gate. Agent sessions classify task risk before acting; eval harness classifies attack risk before running. HIGH blocks execution and requires human confirmation or anETHICS.mdclearance entry. — Plain English vulnerability explanations on top of eval results. Per-attack explanation registry,make reporttarget,--explainflag, sample output indocs/sample_report.md. Rationale: makes the framework accessible to non-security engineers and is a meaningful differentiator for recruiters and workshop reviewers.
-
Bespoke web UI for eval visualization. Inspect AI already ships one. Useuv run inspect view. Note: distinct from the plain-language reporting layer (§13.5) — that is markdown output, not a UI. -
Custom scoring DSL. Inspect AI scorers are flexible enough. Reinventing this wastes sprint hours. -
Running every eval on every model every day. API cost alone kills the sprint. Cross-model runs batch to the full-sweep milestones inAGENT_SHIELD_TODO.md.
Some attack work is dual-use. These items do not get built until the
ETHICS.md responsible disclosure policy (finalized) clears the
specific item.
- Zero-day MCP server attack demos against named production servers
- Bespoke GCG suffixes optimized against frontier API models (paper release only, not code release)
- Cross-vendor data exfiltration chains
Entries use checkboxes so the file stays grep-able. Any PR that swaps a backlog item into the active sprint must update this file in the same commit, with a one-line reason for the swap.
Last reviewed: initial entry
Next review: before the first THREAT_MODEL.md v2 pass