Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/encod3d-sec/torch/hunt-cachenpx skills add Encod3d-Sec/TORCH --skill hunt-cachegit clone --depth 1 https://github.com/Encod3d-Sec/TORCHWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/encod3d-sec/torch/hunt-cache)<a href="https://agentmods.dev/skills/encod3d-sec/torch/hunt-cache"><img src="https://agentmods.dev/badge/skills/encod3d-sec/torch/hunt-cache.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00039 | $0.01521 |
| Opus 5 | $0.00019 | $0.00760 |
| Sonnet 5 | $0.00008 | $0.00304 |
| Haiku 4.5 | $0.00004 | $0.00152 |
Grade A, and why
hunt-cache scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
**Drive load-bearing requests through Burp Repeater** for operator visibility; use Param Miner to enumerate unkeyed headers/params. curl is fine for the quick keyed-vs-unkeyed loop. How it starts
The opening of the file, as written. The whole thing — 75 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Hunt: Web Cache Attacks
Assumes hunt-core for the scope gate, two-account rule, confirmation gate, enumeration limits, stop conditions, wiki protocol, FIND output, and Deadends. Do not re-derive any of that here.
Wiki
qmd_query "web cache poisoning deception unkeyed input cache-key path confusion" via wiki-search MCP
Hub: [[web-moc]] (live web index). Primary page: [[web-cache-poisoning]]. Payload arsenal: wiki/payloads/web-cache.md.
Anchors: [[web-cache-deception]], [[web-cache-attacks]]. Related: [[http-host-header-attacks]], [[http-request-smuggling]].
Attack surface
Needs a cache in front (CDN / Varnish / Cloudflare / Akamai / Fastly, or an app-layer cache). Signals: Age, X-Cache: hit/miss, Cache-Control, CF-Cache-Status headers; static-ish responses; responses that reflect a header or param.
Rank before testing:
- Unkeyed headers that reflect -
X-Forwarded-Host,X-Forwarded-Scheme,X-Host,X-Forwarded-For, plus custom headers a page reflects into links/scripts. Highest hit-rate poisoning vector; discover unkeyed inputs with Param Miner. - Path / parameter cloaking - static-looking suffixes and delimiter tricks (
/account/profile.css,/account/profile/nonexistent.js, path-parameter;, encoded%2f, fat GET) that desync what the cache keys on from what the origin serves. Primary deception vector. - CDN edges and normalization gaps - cache-key normalization (case, trailing slash, duplicate params) differing from origin routing; multi-CDN or origin-vs-edge disagreement.
Methodology
Drive load-bearing requests through Burp Repeater for operator visibility; use Param Miner to enumerate unkeyed headers/params. curl is fine for the quick keyed-vs-unkeyed loop.
- Identify the cache + cache key. Compare
X-Cache/Ageacross requests; determine what is keyed (usually method + host + path + some query) vs unkeyed (most headers, some params). Always attach a unique cache-buster while probing so you never touch a shared key. - Cache poisoning (unkeyed input -> harmful response, then cached for others).
- Find an unkeyed input that affects the response (reflected header/param):
X-Forwarded-Host,X-Forwarded-Scheme,X-Host,X-Forwarded-For, custom headers (Param Miner to discover). - Make it produce harm (XSS / redirect / resource swap), then confirm the cached poisoned response is served to a fresh request (cache-buster off) - and cross-session (see confirmation gate).
- Fat GET, parameter cloaking, and cache-key normalization gaps as variants.
- Find an unkeyed input that affects the response (reflected header/param):
- Cache deception (trick the cache into storing a victim's private page).
- Request a private page with an appended static-looking suffix/path:
/account/profile.css,/account/profile/nonexistent.js, path-parameter;, encoded%2f. - If the origin returns the private content but the cache stores it as static -> retrieve another user's data unauthenticated.
- Request a private page with an appended static-looking suffix/path:
- Confirm impact crosses a trust boundary - served to other users / discloses private data, not just your own session.
- Distill when confirmed (reusable unkeyed-header or deception-path trick, GENERIC, no client host):
python3 scripts/wiki-stage.py --kind technique --slug <slug> --target-page techniques/web/web-cache-poisoning.md(deception-path findings:--target-page techniques/web/web-cache-deception.md).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 75 lines · 39 tokens per session scan A 141b2322c199
hunt-cache is a skill published in the GitHub repository Encod3d-Sec/TORCH (284 stars, last pushed 3d ago), licensed MIT. It adds 39 tokens to every session and 1,521 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
auto-perf-optimize
Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.
chat-perf
Run chat perf benchmarks and memory leak checks against the local dev build or any published VS Code version. Use when investigating chat rendering regressions, validating perf-sensitive changes to chat UI, or checking for memory leaks in the chat response pipeline.
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…