Snap-O skill

Codex skills that read an Android app's network traffic, override API responses and adjust live UI values without a rebuild.

  • 120 ★ on the repository
  • Last commit
  • Apache-2.0
Skill

Extended access

Why this level

  • The utilities talk to the app through adb and override API responses or interface values on the device.
  • Captured headers and request bodies can contain tokens and personal data.
All reasons and checks

openai/snap-o

Install

Manual install

mkdir -p ~/.local/bin && curl -fsSL https://raw.githubusercontent.com/openai/snap-o/main/skills/snap-o-network-inspector/scripts/snapo-network -o ~/.local/bin/snapo-network && chmod +x ~/.local/bin/snapo-network

Downloads the network inspector utility. For Tweaks the `snapo-tweaks` script sits next to it in the `snap-o-tweaks` skill directory.

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • The utilities talk to the app through adb and override API responses or interface values on the device.
  • Captured headers and request bodies can contain tokens and personal data.

This is third-party code. Review the repository files before installing.

What it does

Snap-O from OpenAI is a set of debugging tools for Android. The repository holds a Codex plugin and two skills: `snap-o-network-inspector` and `snap-o-tweaks`. The first reads HTTP requests and responses, SSE events and WebSocket messages through the `snapo-network` utility, and edits or delays API responses with a Python script. The second uses `snapo-tweaks` to work with live UI values: it reads, changes and resets them and runs actions the app has registered. Both utilities run on macOS and Linux and need Python 3 and Android Platform Tools. The Snap-O macOS app is not required. The Android project itself must include the Snap-O libraries: traffic is captured in OkHttp, Ktor on the OkHttp engine and HttpURLConnection.

Who it is for. Android developers who debug network calls and tune interface values together with Codex.

Good fit when

  • The app gets an unexpected API response and you need to see headers and body on the device.
  • A screen is checked against a server error or a slow response without touching the backend.
  • A margin, color or animation curve is tuned on the running app without a rebuild.
  • The agent carries the tuned values over into the source code.

Not a fit when

  • The app is not on Android: the utilities work through adb.
  • Snap-O debug dependencies cannot be added to the project.
  • You need traffic from someone else's app whose build you cannot touch.

Example request

Show the app's latest API requests and replace the orders list response with an empty array delayed by two seconds.

Limitations

The skills only see apps with the Snap-O integration: without the libraries in the build there is nothing to capture. They need Python 3, adb from Android Platform Tools and a device with USB debugging or an emulator. Response overrides require OkHttp interception support in the app. Release builds use empty `noop` artifacts that pass traffic through and never start the Snap-O server. The README gives no dedicated install command for the Codex skill: the plugin sits in the `.codex-plugin` directory and the utilities are downloaded with `curl`.

How to disable. Remove the plugin or the `snapo-network` and `snapo-tweaks` utilities from the agent's skills directory. In the Android project, swap the Snap-O debug dependencies for `noop` variants or drop them.

FAQ

Which HTTP clients does Snap-O capture?

OkHttp, Ktor on the OkHttp engine and HttpURLConnection. Response overrides through `snapo-network intercept` go over the OkHttp connection.

Is the Snap-O macOS app required?

No. Both utilities run on macOS and Linux without the app; Python 3 and Android Platform Tools are enough.

How do I find the right app on the device?

Run `snapo-network list --json`: the rows carry `pid`, `processName` and `packageName`. Select the device with `-s`, `-d` or `-e`.

How do I change an interface value on the fly?

Run `snapo-tweaks apps --json`, then `snapo-tweaks list -s SERIAL -n SOCKET --json` and `snapo-tweaks set 'Typography/Font size' 42 -s SERIAL -n SOCKET`. Take the value name from your own app.

How do I override an API response?

Write a Python script with route handlers and run `snapo-network intercept <file.py>`. The app must support OkHttp interception.

Discussion

No questions or reviews yet.

Skills
Official

Official set of 30 skills from the Android team: Jetpack Compose, AGP 9 upgrade, R8, Perfetto profiling, Navigation 3, CameraX, Google Play policies

SkillExtended access10.5KRepository stars

21 skills for Android and KMP in Claude Code, Codex and Copilot CLI: Compose, coroutines, Flow, networking, storage, Gradle

PluginMinimal access173Repository stars

An opencode fork for mobile development: the agent runs the iOS simulator or Android emulator and shows the device alongside

CLIBroad access244Repository stars

Skills and a CLI that let Claude Code, Codex and OpenCode operate an Android phone: open apps, tap, type and test workflows

SkillBroad access1.8KRepository stars

A plugin for Codex and Claude Code: the agent views an Android phone's screen, taps and types over Wi-Fi, with no ADB or USB.

PluginBroad access137Repository stars

Skill and CLI for controlling an Android phone via ADB and vision models: the agent opens apps, searches, orders and verifies results

SkillBroad access26Repository stars

README in short

The main product is a macOS app with screen capture, a network inspector and a Tweaks panel. Network and Tweaks also have standalone command-line utilities and Codex skills for macOS and Linux.

README badge

Original SKILL.md

---
name: snap-o-network-inspector
description: Inspect Android network captures and intercept HTTP calls with the Snap-O CLI for a selected device/socket. Use for request/response details, websocket events, API response overrides, mock responses, or delays with Python route handlers.
---

# Snap-O Network Tool

Use this skill to inspect network traffic or override API responses in an Android app.

## CLI Path

Use the Network CLI bundled with the Snap-O plugin:

```bash
SNAPO_BIN=/path/to/snap-o/skills/snap-o-network-inspector/scripts/snapo-network
```

Resolve `scripts/snapo-network` relative to the directory containing this `SKILL.md`; do not assume the current working directory. The script requires Python 3 and Android Platform Tools; no Python packages, compiler toolchain, or macOS application are required.

The script resolves `adb` from `PATH`, `ANDROID_SDK_ROOT`, or `ANDROID_HOME`. Use `--adb <path>` or `SNAPO_ADB` to select a specific ADB executable or wrapper. Wrappers selecting a remote ADB server must tunnel Snap-O forwards back to localhost; otherwise, pass both `--adb-host` and `--adb-port`.

Listings use ADB process and package information without contacting the app. JSON rows contain `pid`, `processName`, and `packageName`; unresolved identity fields are `null`. Friendly app labels and icons are not loaded.

## Current Command Surface

- `snapo-network list`: lists available Snap-O Network Tool servers.
- `snapo-network requests`: emits CDP network events for a server.
- `snapo-network show`: shows full details for a request id, including headers and bodies.
- `snapo-network intercept <file.py>`: runs [Python route handlers](references/interception.md) to edit or mock HTTP responses; requires Snap-O OkHttp interception support in the app.

Useful global selectors:

- `-s`, `--serial`: use a specific device serial.
- `-d`: use the single connected USB device.
- `-e`: use the single connected emulator.
- `--adb`: use a specific ADB executable or wrapper.
- `--adb-host`, `--adb-port`: connect directly to an explicit remote ADB server; otherwise the configured ADB command selects its endpoint.

## Inspection Flow

1. List available servers.

```bash
"$SNAPO_BIN" list --json
```

Report a problem