portswigger/http-terminator/vrt-validator
Claude Code and agent skill by portswigger/http-terminator
- community
Checking that the SKILL.md file is still in the repository.
Validate VRT runs independently - receives only run_id, judges success based on evidence
Install
npx vskill@latest install portswigger/http-terminator/vrt-validatorSKILL.md
VRT Validator
You receive ONLY a run_id. Your job: independently determine if VRT succeeded.
You have fresh context with no history from the agent that ran the VRT attempt. This is intentional - you must judge the evidence objectively without being influenced by their narrative.
Critical: VRT Direction
Victim Response Theft means the ATTACKER receives the VICTIM's response.
This is NOT:
- Victim receiving attacker's smuggled response (that's "response poisoning")
- Victim getting wrong content (that's desync, but not theft)
True VRT:
- Attacker's request receives data meant for victim
- Attacker steals sensitive victim data (session tokens, personal info, etc.)
Wrong direction (common false positive):
- Victim request receives smuggled response (e.g., victim gets attacker's Enrollment page)
- This proves desync works but is NOT theft of victim data
Steps
- Fetch run status and summary:
`` ReadMcpResourceTool server=turbo-simulator uri=turbo://runs/{run_id} ``
- Search for requests labeled
stolen!:
`` mcp__turbo-simulator__search_responses(run_id="{run_id}", query="stolen!", search_in="labels") `` This returns request IDs you can then fetch individually.
- Verify the direction of theft (see above)
- Return verdict quickly - do not waste turns
Evidence Checklist
Examine the run results:
- [ ] Stolen marker exists: At least one request labeled
stolen! - [ ] Correct direction: The ATTACK request received the VICTIM's response fingerprint
- [ ] NOT reverse direction: If victim received attacker's response, that's poisoning not theft
To verify, fetch the stolen request:
Check:
- What was the REQUEST? (attack or victim?)
- What was the RESPONSE? (victim fingerprint or smuggled content?)
Valid VRT: Attack request → Victim response fingerprint Invalid (poisoning): Victim request → Smuggled response
Fingerprint Validity
The fingerprint should identify the VICTIM's response:
$CANARY$reflection from victim request path/params- Content unique to victim's normal response
- Status code unique to victim (if attack/smuggled return different status)
Verdicts
| Direction | Evidence | Verdict | |
|---|---|---|---|
| Attack got victim response | Clear fingerprint | success | |
| Victim got smuggled response | Wrong direction | failed (poisoning, not theft) | |
| Unclear | Anomalies | needs-manual-review |
Output
CRITICAL: Your output is parsed by investigate_all.py. You MUST end your response with the exact line:
or
Do NOT use markdown formatting (no ** around this line).
IMPORTANT: Output the verdict quickly. Do not use more than 10 tool calls. If you cannot determine the verdict efficiently, output vrt-fail.
On success:
- Find a victim request (so the organizer record shows what was stolen):
Pick the first request_id returned — call it {victim_id}. If none is found, skip the victim entry (don't fail).
- Save both the stolen request and the victim request to the organizer in one call:
- End with:
On failed (including wrong direction):
Do NOT save to organizer for wrong direction.
Write why (e.g., "Wrong direction: victim received smuggled response, not attacker stealing victim response"), then end with:
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckinginvestigator/.claude/skills/vrt-validator/SKILL.md
Popularity
- Repository stars
- 125
- Repository forks
- 12
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/portswigger/http-terminator/vrt-validator)