Files
codex/codex-rs/debug-client
Felipe Coury 5f03ec622b feat(app-server): add permission request capabilities
Add the `supportedServerRequests` initialize capability across the
app-server protocol, clients, and connection session state. This lets
surfaces explicitly advertise which conversational permission approval
requests they know how to receive.

Keep this branch limited to the opt-in contract and the bookkeeping
needed to store that capability per connection. Delivery and UI handling
stay in later stacked PRs so existing clients remain backward
compatible and the review surface stays small.
2026-04-12 21:43:09 -03:00
..

WARNING: this code is mainly generated by Codex and should not be used in production

codex-debug-client

A tiny interactive client for codex app-server (protocol v2 only). It prints all JSON-RPC lines from the server and lets you send new turns as you type.

Usage

Start the app-server client (it will spawn codex app-server itself):

cargo run -p codex-debug-client -- \
  --codex-bin codex \
  --approval-policy on-request

You can resume a specific thread:

cargo run -p codex-debug-client -- --thread-id thr_123

CLI flags

  • --codex-bin <path>: path to the codex binary (default: codex).
  • -c, --config key=value: pass through --config overrides to codex.
  • --thread-id <id>: resume a thread instead of starting a new one.
  • --approval-policy <policy>: untrusted, on-failure (deprecated), on-request, never.
  • --auto-approve: auto-approve command/file-change approvals (default: decline).
  • --final-only: only show completed assistant messages and tool items.
  • --model <name>: optional model override for thread start/resume.
  • --model-provider <name>: optional provider override.
  • --cwd <path>: optional working directory override.

Interactive commands

Type a line to send it as a new turn. Commands are prefixed with ::

  • :help show help
  • :new start a new thread
  • :resume <thread-id> resume a thread
  • :use <thread-id> switch active thread without resuming
  • :refresh-thread list available threads
  • :quit exit

The prompt shows the active thread id. Client messages (help, errors, approvals) print to stderr; raw server JSON prints to stdout so you can pipe/record it unless --final-only is set.

Notes

  • The client performs the required initialize/initialized handshake.
  • It prints every server notification and response line as it arrives.
  • Approvals for item/commandExecution/requestApproval and item/fileChange/requestApproval are auto-responded to with decline unless --auto-approve is set.