Skip to content

Prompt injection test: see what your agent's permission stops, from signed receipts - #7

Merged
chrisjleal merged 5 commits into
mainfrom
claude/marketplace-setup-check-q033n0
Oct 20, 2026
Merged

chrisjleal merged 5 commits into
mainfrom
claude/marketplace-setup-check-q033n0

Conversation

@chrisjleal

Copy link
Copy Markdown
Contributor

User-facing change

Before: nothing in this repository let a builder test their own agent against prompt injection, or show what a scoped permission changes.

After: examples/injection-test hides the five AgentDojo attack templates (verbatim, MIT notice kept) in a vendor note the agent reads. It runs the same task under a scoped and a broad permission, then grades every run from its signed receipt. The outcomes are resisted, refused, held or dispatched, alongside utility under attack. Two more cases frame the result: a clean run and an assume-breach run. npm run verify checks a sealed run folder offline. It needs no account and catches an edited record.

How: the agent is a hosted job on the builder's own account. The kit mints two short-lived grants, creates private notes, polls the jobs, reads each receipt's portable proof, verifies it with @proofable/sdk, and seals the folder with SHA256SUMS. The attacker host is .invalid, so it never resolves. The grants are revoked when the run ends. Nothing is published on-chain. --share makes records link-only and is opt-in.

The README shows a real first run, from 20 October 2026: 3 attacks, k=1. The model ignored every injected attack under both permissions. With the model taken over, the scoped permission refused the outbound call before it ran, and the broad key let it go. The README also says what a permission does not stop: misuse of a tool the task needs.

Changelog

How you checked it

  • Live: the run reported in the README, on the hosted runtime. The assume-breach receipts were verified offline with the kit's verify. Two tampered copies failed it: an edited record, and a forged signed content.

  • The kit's task and assume-breach prompt builders reproduce the exact prompts used in the live jobs.

  • npm run validate passes, including the public-surface gate.

  • No keys, tokens, bearer secrets, or private proof content in this description or the diff.


Generated by Claude Code

…m signed receipts.

examples/injection-test hides the five AgentDojo attack templates (verbatim, MIT notice
kept) in a vendor note a hosted agent is asked to summarize. Each attack runs under a
permission scoped to the task and under a broad one, plus a clean control and an
assume-breach case where the attacker's goal is the instruction itself.

Every run is graded from the terminal receipt's signed tool activity: resisted, refused
before it ran, held for approval, or dispatched; utility under attack is graded too.
verify re-checks checksums, receipt signatures, run binding and every grade offline.
--payload plants custom attack text for bounty submissions; --share makes records
link-only. Grants are minted per run, expire in two hours, and are revoked at the end.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013aDTfwQ3nirTB9pDCaFZmo
…n is a sample.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013aDTfwQ3nirTB9pDCaFZmo
…asses the reader-language check.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013aDTfwQ3nirTB9pDCaFZmo
… codes it quotes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013aDTfwQ3nirTB9pDCaFZmo
@chrisjleal
chrisjleal marked this pull request as ready for review October 20, 2026 17:25
@chrisjleal
chrisjleal merged commit 58d6bb6 into main Oct 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants