Snap-O Network Inspector
Use this skill to pull raw network evidence from Snap-O.
CLI Path
Use the bundled binary:
bash
SNAPO_BIN=/Applications/Snap-O.app/Contents/MacOS/snapo
If Snap-O is not installed at that path, recommend installing it from: https://openai.github.io/snap-o/
Current Command Surface (from snapo help)
- •
snapo network list: lists available Snap-O link servers. - •
snapo network requests: emits CDP network events for a server. - •
snapo network show: shows full details for a request id (headers + request/response bodies).
Useful global selectors:
- •
-s,--serial: use a specific device serial. - •
-d: use the single connected USB device. - •
-e: use the single connected emulator.
Core Flow
- •List available servers.
bash
"$SNAPO_BIN" network list --json
Optional flags:
- •
--no-app-info: skip package/app metadata lookup for faster listing.
- •Pick a target serial and socket.
- •If multiple devices are connected, ask which device/emulator to inspect.
- •If multiple sockets exist, select
-n <socket_name>explicitly.
- •Pull captured events.
bash
"$SNAPO_BIN" network requests -s <serial> -n <socket_name> --no-stream --json
- •Inspect a single request deeply.
bash
"$SNAPO_BIN" network show -s <serial> -n <socket_name> -r <request_id> --json
- •Re-check command help if output shape differs.
bash
"$SNAPO_BIN" --help "$SNAPO_BIN" network --help "$SNAPO_BIN" network list --help "$SNAPO_BIN" network requests --help "$SNAPO_BIN" network show --help
Common Fetch Recipes
List request start events with compact fields:
bash
"$SNAPO_BIN" network requests -s <serial> -n <socket_name> --no-stream --json \
| jq -rc 'select(.method=="Network.requestWillBeSent") | {requestId:.params.requestId, method:.params.request.method, url:.params.request.url}'
Filter by endpoint substring:
bash
"$SNAPO_BIN" network requests -s <serial> -n <socket_name> --no-stream --json \
| jq -rc 'select(((.params.request.url // .requestUrl // "") | contains("/api/const")))'
Get the most recent started request id:
bash
"$SNAPO_BIN" network requests -s <serial> -n <socket_name> --no-stream --json \ | jq -r 'select(.method=="Network.requestWillBeSent") | .params.requestId' \ | tail -n 1
Then fetch full details:
bash
"$SNAPO_BIN" network show -s <serial> -n <socket_name> -r <request_id> --json
Missing Request Troubleshooting
If an expected request is absent:
- •Verify device selection (
-s,-d, or-e). - •Verify socket selection (
-n) and avoid relying on implicit socket selection. - •Confirm the request path actually executed.
- •Confirm that code path uses an HTTP client with Snap-O interception enabled.
- •If there are multiple clients, inspect alternate/non-default client wiring.
Output Notes
- •
--jsonemits NDJSON, so usejqline-by-line. - •
network requestsemits Chrome DevTools Protocol (CDP)-style event records (for example, top-levelmethod+params). - •Use
--no-streamwhen you want a one-shot buffered snapshot. - •Use
jq 'keys'on a sample line if fields differ across Snap-O versions.