Repository navigation
v0.41.0
agentsec v0.41.0
Offline, stdlib-only kit. 36 tools. This release closes the independent red-team detection-gap issues. No new scanners.
Detection-gap issues #12–#16
General rule changes (not fixture-specific string matches):
- resultguard — “disregard your prior constraints” and similar instruction nouns; conceal phrasing with words between “mention” and “the user”; private-to-public copy bait (enumerate private repos into a PR); typographic-quoted jailbreak phrases in research/discussion context stay clean; the bare word “jailbreak” in a paper or blog is no longer TR01.
- toolpoison — “no need to mention this to the user”; mandatory shell command prefixes (Trail of Bits line-jumping); parameter names that themselves encode “read this secret file”; documentary mentions of
~/.ssh/id_rsaand similar paths stay clean when no access verb is present. - tracesweep — decodes base64 (and textual hex) blobs and scans the result with existing secret rules; reconstructs known-prefix secrets split across later tool-result turns.
- shellfence —
find $HOME … -exec rm/-deleteandrm -rf $HOME(Amazon Q-style home wipes); DNS exfil viadig/nslookup/hostto collector/OOB names or interpolated secrets; ANSI-C / hex escape normalization so$'\x72\x6d…'still hits SF02. - memfence — “paste your API keys into the chat” harvest wording (also closes the remaining author-corpus MF05 miss); MINJA-style query remapping and “authoritative policy for all future sessions.”
- mcpposture — MP04 (
npx -y) is suppressed when the package is already pinned to an exact version; unpinned-ystill flags MP03 and MP04.
Benchmark
| Set | Before (v0.40.0) | After (v0.41.0) |
|---|---|---|
| Author expanded (125 / 10 tools) | 100% / 98.7% / 99.3% (75/0/1/49) | 100% / 100% / 100% (76/0/0/49) |
| Original 85-sample, 5-tool slice | 100% / 100% / 100% (51/0/0/34) | unchanged |
| Held-out (40, written after #7–#11) | 100% / 100% / 100% (26/0/0/14) | unchanged |
| Red-team independent (100, unseen) | 93.8% / 85.7% / 89.6% (60/4/10/26) | frozen, still shown |
| Same red-team set after #12–#16 | — | 100% / 100% / 100% (70/0/0/30), labeled seen |
The red-team set is no longer independent once these fixes landed. The original unseen v0.40.0 numbers stay on the benchmark page. A 100% seen score is not a claim about new, unpublished attacks.
python3 benchmarks/run_benchmark.pyThe playground vendors for resultguard, shellfence, and mcpposture were resynced so the in-browser copies match the CLI.
The floating Action / image tag v0 points at this release (uses: dunkleschitz/agentsec@v0 or @v0.41.0).
Still not on PyPI. Publishing steps are in PUBLISHING.md.