mirror of
https://github.com/openai/codex.git
synced 2026-05-05 13:51:29 +03:00
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.
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 thecodexbinary (default:codex).-c, --config key=value: pass through--configoverrides tocodex.--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 ::
:helpshow help:newstart a new thread:resume <thread-id>resume a thread:use <thread-id>switch active thread without resuming:refresh-threadlist available threads:quitexit
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/requestApprovalanditem/fileChange/requestApprovalare auto-responded to with decline unless--auto-approveis set.