Skip to content

Symptom index

Symptom Most likely cause
Nothing happens at all send() was never called — setters only accumulate
Unknown permission mode: … A name outside the closed set was passed to setPermissions()
An attachment was not sent with the second turn Attachments are cleared by send(), by design
A model change had no effect Set while a process was already live; it applies at the next spawn
JSON parse failures on CLI output ANSI escapes — the CLI thinks it has a capable terminal
mcp.list() returns [] No MCP configured, or the command failed — the two are indistinguishable
No conversation found with session ID Resuming an id the CLI has never seen
ENOENT on spawn The CLI is not on the inherited PATH — or the cwd does not exist
UNC paths are not supported A WSL UNC path was passed as a spawn cwd
The session starts but no events arrive The listener was registered after the CLI spoke, or the output is not NDJSON
The CLI hangs after the first answer The stream flags are missing, so stdin never stayed open
Permission requests never arrive --permission-prompt-tool stdio is missing
Processes survive stop() The CLI was not spawned detached, or Windows descendants detached from the tree
Node processes accumulate over days Orphans from hosts that were hard-killed
An argument is silently altered on Windows %VAR% expansion by cmd.exe
The resolved path is not the binary that runs PATHEXT: where listed the extension-less wrapper first
Contradictory answers in one conversation Two CLIs are driving the same session id
Section Symptoms
Spawning ENOENT, UNC paths are not supported, %VAR% alteration, PATHEXT, processes surviving stop()
Sessions and events No conversation found, no events, nothing happening, permission-mode errors, attachments, model changes, ANSI parse failures, empty mcp.list(), sign-in, describe(), hangs, interrupts, writes
Orphans Accumulating processes, a silent registry, two CLIs in one conversation