name: intercepted-proxy description: "Launch scoped browsers through the correct Caido proxy, enable live intercept or Tamper one lane at a time, modify selected requests, forward them, then disable intercept."
Intercepted Proxy
Use when a live bug bounty task needs browser traffic routed through Caido and an agent must intercept, inspect, modify, forward, and clean up one request or request family.
This skill owns the operational proxy lifecycle. Use it before /single-request-grabber when the browser must be launched through the proxy first.
chromium-test should be the default browser launcher for this workflow. It prefers Playwright's bundled Chromium when available and routes launches through the runtime browser proxy by default.
Use intercept as the preferred live mode when the value of the test depends on seeing or changing a request while the browser flow is happening. This includes single-use tokens, nonce-bound requests, CSRF-bearing actions, signed one-shot flows, browser-generated state, and short critical state-changing flows where replaying later would be weaker or misleading.
Intercept can also be the fastest way to understand a live flow. When the history is noisy or the target request is buried in a multi-request browser action, pause the flow, forward unrelated requests, and inspect the target request family as it appears instead of relying only on passive history filtering afterward.
Load Order
- Read scope, owned-account context, and
live-testing-policy. - Read
proxy-routing-policyto resolve the current runtime lane. - Read
agent-proxyfor agent-lane work orryushe-proxyonly when Ryushe explicitly asks for his personal Caido lane. - Read
caidoto check MCP connectivity. - Read
chromium-testor the relevant browser automation skill before launching a browser. - Read
pwnfoxwhen the task mentions a PwnFox color, profile, tab session, or phrase like "Red session"; useX-PwnFox-Color: <color>to isolate that lane in proxy history. - Read
$HARNESS_ROOT/prompts/intercepted-proxy-playbook.md. - Route the security interpretation afterward:
- one fresh request/body/token ->
/single-request-grabber - authz/object changes ->
/access-controlor/idor - payment/billing ->
/payment-testing - headers/request-shape ->
/headers
- one fresh request/body/token ->
Runtime Proxy Rules
- OpenClaw/Ghost/
ghostonbread:- browser proxy:
http://hoster:8080 - Caido MCP:
http://hoster:3333/mcp
- browser proxy:
- Hoster:
- browser proxy:
http://localhost:8080 - Caido MCP:
http://localhost:3333/mcp
- browser proxy:
- Ryushe PC /
ryushespc/ Abommie:- browser proxy:
http://localhost:8080 - Caido MCP:
http://localhost:3333/mcp
- browser proxy:
Never pass a /mcp URL as a browser proxy. Browser proxy and Caido MCP are different listeners.
If hoster does not resolve from OpenClaw, check the route table at /home/ryushe/projects/ai-policies/skills/proxy-routing-policy/data/proxy_routes.json instead of guessing.
Browser Launch Requirements
Any spawned Chromium/Chrome browser used for intercept testing must include:
--proxy-server=<resolved-browser-proxy>
trusted proxy CA in the isolated Chromium profile
For the harness launcher, prefer:
python3 "$HARNESS_ROOT/skills/chromium-test/scripts/chromium_test.py" <program> "<task>" \
--url <target-url>
The launcher adds the runtime --proxy-server automatically and imports the mitmproxy CA into the isolated profile by default. Pass --proxy-server explicitly only when overriding the route table. Use --proxy-cert-mode ignore only for disposable debugging.
When To Intercept
Prefer live intercept when:
- the action uses a single-use token, nonce, signed request, expiring CSRF token, or other fresh browser-generated value
- the request represents a single action item or short state-changing flow
- the test requires modifying one field before the server consumes the request
- the browser flow is noisy and the agent needs to identify the relevant request family in real time
- replaying from saved history would lose sequencing, timing, token freshness, or browser context
Prefer passive proxy history or direct replay when:
- the request is repeatable and does not depend on one-time state
- the goal is only request-shape review, comparison, or documentation
- the action can be reproduced safely with direct HTTP replay using agent-owned auth/session material
Intercept Lifecycle
- Resolve and verify the browser proxy and Caido MCP endpoints.
- Launch or confirm the browser is using the proxy flag.
- Enable Caido intercept or create one scoped Tamper rule with source
INTERCEPT. - Trigger exactly one browser action or short flow.
- Forward non-target requests needed for the flow.
- Pause or match only the target request/family.
- Modify one approved field, header, method, query parameter, or body value.
- Forward the request once and observe the app response/state.
- Disable intercept or disable/delete the temporary Tamper rule immediately.
- Confirm no Ghost intercept/tamper rule remains active.
- Record a sanitized action trail.
Guardrails
- One proxy lane at a time unless Ryushe confirms enough proxies are available.
- One mutation family at a time.
- Intercept only the minimum request family needed for the test; forward unrelated browser traffic without mutation.
- Keep rules scoped to exact host/path/request family when possible.
- Do not leave intercept or Tamper rules enabled after the lane.
- Do not log cookies, bearer tokens, auth headers, CSRF tokens, card data, payment tokens, raw credentials, or private request bodies.
- Stop if the browser is not actually proxied, if intercept cannot be disabled cleanly, or if the next step would spend money, modify non-owned data, trigger human review, or create irreversible impact.
Evidence
Write notes under the owning skill lane, usually:
$HARNESS_SHARED_BASE/{program}/ghost/<owning-skill>/
Record:
- runtime hostname and resolved lane
- browser proxy and Caido MCP endpoint, without secrets
- PwnFox color/header filter when used
- browser launch command shape or launcher JSON path
- whether
--proxy-serverwas present and the proxy CA status wastrusted; record explicit certificate-ignore fallback if used - intercept/Tamper rule name, source, host/path condition, and sanitized mutation
- forwarded non-target request count
- target full URL, method, status, response type, and non-secret app state
- cleanup confirmation that intercept/rule is off