Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions codex-rs/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions codex-rs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ members = [
"app-server",
"app-server-protocol",
"app-server-test-client",
"debug-client",
"apply-patch",
"arg0",
"feedback",
Expand Down
15 changes: 15 additions & 0 deletions codex-rs/debug-client/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[package]
name = "codex-debug-client"
version.workspace = true
edition.workspace = true
license.workspace = true

[dependencies]
anyhow.workspace = true
clap = { workspace = true, features = ["derive"] }
codex-app-server-protocol.workspace = true
serde.workspace = true
serde_json.workspace = true

[dev-dependencies]
pretty_assertions.workspace = true
57 changes: 57 additions & 0 deletions codex-rs/debug-client/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
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`, `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.
Loading
Loading