You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+11-7Lines changed: 11 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -454,7 +454,7 @@ through the tap.
454
454
455
455
## Compatibility Matrix
456
456
457
-
Captured from `claude --help` on Claude Code `2.1.146`.
457
+
Captured from `claude --help` on Claude Code `2.1.148`.
458
458
459
459
Status legend:
460
460
@@ -497,8 +497,8 @@ Status legend:
497
497
|`--input-format`| Supported |`text` prompts are read from argv/stdin. `stream-json` SDK input is read from stdin. | Fake-PTY test, Python SDK test, TypeScript SDK test, plus live Python/TypeScript SDK game tests. |
498
498
|`--json-schema`| Partial | Forwarded, but `cctty` synthesizes result frames when interactive transcript lacks one; `structured_output` parity is not proven. | Parser coverage only. Needs structured-output differential. |
499
499
|`--max-budget-usd`| Partial | Forwarded, but Claude documents this as print-only. Underlying interactive behavior is not proven equivalent. | Parser coverage only. |
500
-
|`--mcp-config`|Pass-through|Forwarded to interactive Claude. | Parser coverage only. SDK MCP control messages are not bridged yet. |
|`--mcp-config`|Supported|Normal Claude-compatible stdio/SSE MCP configs are forwarded to interactive Claude. SDK in-process MCP servers are bridged: TypeScript `initialize.sdkMcpServers` and Python `{ "type": "sdk" }` entries are rewritten into a temporary stdio MCP proxy, and `mcp_message`control requests are round-tripped back to the SDK. | Parser coverage, fake-PTY argv passthrough for normal MCP configs, and TS/Python SDK-MCP round-trip tests covering `initialize`, `tools/list`, and `tools/call`. |
501
+
|`--mcp-debug`| Pass-through | Forwarded to interactive Claude. | Parser coverage plus fake-PTY argv passthrough test. |
502
502
|`--model`| Pass-through | Forwarded to interactive Claude. | Parser coverage and live differential with default configured model path. Specific model aliases not exhaustively tested. |
|`--session-id`| Supported | Forwarded and used to locate the transcript. If omitted in print mode, `cctty` creates one. | Fake-PTY and live differential cover session-id based transcript tailing. |
516
516
|`--setting-sources`| Pass-through | Forwarded to interactive Claude. | Parser coverage, including `--setting-sources=project`. |
|`--strict-mcp-config`| Pass-through | Forwarded to interactive Claude. | Parser coverage plus fake-PTY argv passthrough test. |
519
519
|`--system-prompt`| Pass-through | Non-empty values are forwarded to interactive Claude. Empty or whitespace-only SDK values are consumed so they do not erase Claude Code's built-in interactive system prompt. | Parser coverage for non-empty pass-through and empty-value consumption. |
520
520
|`--tmux`| Pass-through | Forwarded. `--tmux=classic` is preserved as an equals-form flag; plain `--tmux` does not swallow the prompt. | Parser regression test. |
@@ -529,10 +529,14 @@ Some SDKs pass flags that are not listed in current `claude --help`.
529
529
530
530
| Option(s) | Status | Current handling | Notes |
531
531
| --- | --- | --- | --- |
532
-
| `--permission-prompt-tool stdio` | Partial | Consumed by `cctty`, not forwarded to interactive Claude. In `stream-json` mode, `cctty` watches transcript `assistant.tool_use` entries and also recognizes real TTY permission forms when Claude has not persisted the transcript yet. It emits SDK-style `control_request` / `can_use_tool`, waits for the matching `control_response`, then drives the interactive permission UI by keyboard. Bash allow confirms the selected row; Bash deny selects menu item `2` and pastes the SDK denial message into Claude's follow-up form when present. File create/write/edit/update forms are mapped to `Write`/`Edit` with `file_path`; allow confirms the selected row, while deny selects the file prompt's `3. No` row to avoid accidentally choosing "allow all edits during this session". `AskUserQuestion` form tool uses are forwarded with their original structured `questions` input when available; if only the TTY form is visible, cctty parses that form and sends an SDK-shaped fallback request. SDK-returned structured answers are textified and sent through Claude's follow-up prompt, or submitted as the next user message if Claude returns to the main prompt after cancelling the form. If interactive Claude returns to the prompt after a rejected tool without writing a final result, `cctty` emits a synthetic error result with `result: "Permission denied"`. | Fake-PTY tests cover transcript-first allow/deny, Bash TTY-form-before-transcript, file Write TTY-form-before-transcript, transcript-vs-TTY description precedence, `AskUserQuestion` structured form answer round-trip, and TTY-form-before-transcript `AskUserQuestion` fallback. Live Claude Code `2.1.148` coverage forces `Bash(printf:*)` approval with project-local settings and verifies both allow and deny; live `AskUserQuestion` smoke verifies TTY fallback, answer textification, main-prompt answer injection, and final `result`. Live Python and TypeScript SDK game tests exercise `Write` approval through real file-creation TTY forms. Still partial: broader `Edit`/`MultiEdit` TTY variants, exact `permission_suggestions`, and exact `blocked_path` parity are not complete. |
532
+
| `--permission-prompt-tool`, `--permission-prompt-tool stdio` | Partial | `stdio` is consumed by `cctty`, not forwarded to interactive Claude. In `stream-json` mode, `cctty` watches transcript `assistant.tool_use` entries and also recognizes real TTY permission forms when Claude has not persisted the transcript yet. It emits SDK-style `control_request` / `can_use_tool`, waits for the matching `control_response`, then drives the interactive permission UI by keyboard. Bash allow confirms the selected row; Bash deny selects menu item `2` and pastes the SDK denial message into Claude's follow-up form when present. File create/write/edit/update forms are mapped to `Write`/`Edit` with `file_path`; allow confirms the selected row, while deny selects the file prompt's `3. No` row to avoid accidentally choosing "allow all edits during this session". `AskUserQuestion` form tool uses are forwarded with their original structured `questions` input when available; if only the TTY form is visible, cctty parses that form and sends an SDK-shaped fallback request. SDK-returned structured answers are textified and sent through Claude's follow-up prompt, or submitted as the next user message if Claude returns to the main prompt after cancelling the form. If interactive Claude returns to the prompt after a rejected tool without writing a final result, `cctty` emits a synthetic error result with `result: "Permission denied"`. | Fake-PTY tests cover transcript-first allow/deny, Bash TTY-form-before-transcript, file Write TTY-form-before-transcript, transcript-vs-TTY description precedence, `AskUserQuestion` structured form answer round-trip, and TTY-form-before-transcript `AskUserQuestion` fallback. Live Claude Code `2.1.148` coverage forces `Bash(printf:*)` approval with project-local settings and verifies both allow and deny; live `AskUserQuestion` smoke verifies TTY fallback, answer textification, main-prompt answer injection, and final `result`. Live Python and TypeScript SDK game tests exercise `Write` approval through real file-creation TTY forms. Still partial: broader `Edit`/`MultiEdit` TTY variants, exact `permission_suggestions`, and exact `blocked_path` parity are not complete. |
533
533
|`--permission-prompt-tool <name>`| Pass-through | Non-`stdio` values are forwarded to interactive Claude. `cctty` does not emulate custom permission prompt tools itself. | Parser coverage only. |
534
-
|`--system-prompt-file`| Pass-through | Forwarded to interactive Claude. | Parser coverage because SDKs/older CLIs may emit it. |
535
-
|`--task-budget`, `--max-thinking-tokens`, `--thinking`, `--thinking-display`, `--managed-settings`, `--resume-session-at`| Pass-through | Forwarded to interactive Claude. | Parser coverage only. These are SDK/newer-CLI compatibility entries, not from the captured help output above. |
534
+
|`--max-turns`, `--task-budget`, `--max-thinking-tokens`, `--thinking`, `--thinking-display`| Pass-through | Forwarded to interactive Claude. These are emitted by official SDK thinking, budget, and turn-limit options. | Parser coverage only. Print-mode parity still belongs to real Claude. |
535
+
|`--system-prompt-file`, `--append-system-prompt-file`, `--managed-settings`, `--resume-session-at`| Pass-through | Forwarded to interactive Claude. | Parser coverage only. These are SDK/newer-CLI compatibility entries, not from the captured public help output above. |
536
+
|`--session-mirror`, `--sdk-url`| Pass-through | Forwarded to interactive Claude. | Parser coverage only. These are hidden SDK transport/session flags; cctty does not implement the remote SDK transport itself. |
537
+
|`--advisor`, `--channels`, `--dangerously-load-development-channels`, `--plan-mode-instructions`, `--plan-mode-required`| Pass-through | Forwarded to interactive Claude. | Parser coverage only. Hidden/native Claude behavior is not differential-tested. |
538
+
|`--agent-id`, `--agent-name`, `--team-name`, `--agent-color`, `--agent-type`, `--parent-session-id`, `--teammate-mode`| Pass-through | Forwarded to interactive Claude. | Parser coverage only. These hidden teammate/team flags are treated as native Claude-owned semantics. |
539
+
|`--remote`, `--rc`, `--teleport`, `--prefill`, `--prefill-b64`, `--rewind-files`, `--deep-link-cwd-b64`, `--deep-link-last-fetch`, `--deep-link-origin`, `--deep-link-repo`, `--enable-auth-status`, `--enable-auto-mode`, `--init`, `--init-only`, `--maintenance`, `--workload`, `--cowork`, `--xaa`| Pass-through | Forwarded to interactive Claude. | Parser coverage only. These are hidden/native flags found in the installed Claude binary; users should prefer documented flags unless an SDK or host app emits them. |
0 commit comments