- Fix npx command to use --package flag since package has multiple bins
- Remove undocumented autonomous mode (--auto) from Getting Started and Commands
- Remove kilo serve from Commands table (internal, not user-facing)
- Fix kilo session to show actual subcommands (list, delete)
- Remove kilo completion from Commands table (not working)
- Fix table formatting
The @kilocode/cli npm package page had no README. This adds a
README covering installation, usage, features, and links, and
updates the publish script to include it in the published package.
Change proc.once('exit') to proc.once('close') so all stdout/stderr
data events are delivered before StringDecoder.end() is called. The
'exit' event fires when the process exits but before stdio streams
finish draining, which could cause the decoder flush to miss trailing
chunks and corrupt the last multi-byte character.
decoder.write() can hold incomplete multi-byte sequences internally.
Without calling decoder.end() after streams close, those trailing bytes
are silently dropped. Flush all decoders after process exit so any
remaining bytes are emitted as replacement characters rather than lost.
Address review feedback: a shared StringDecoder across stdout and stderr
can mix partial UTF-8 bytes between streams. Use one decoder per pipe so
incomplete sequences on stdout are never completed by stderr bytes.
Replace chunk.toString() with StringDecoder in stream processing to
prevent garbled characters (arrows, tree-drawing chars appearing as
mojibake) when multi-byte UTF-8 sequences are split across chunk
boundaries. StringDecoder maintains state across chunks to correctly
reassemble incomplete characters.
Fixed in bash tool, prompt shell execution, and ripgrep output.
Every child_process.spawn() call was missing windowsHide: true, causing
a visible CMD console window to briefly appear on every shell command,
LSP server start, ripgrep search, clipboard operation, and process kill
on Windows. This option is a no-op on non-Windows platforms.
Add --cloud-fork flag to run, attach, and thread commands that imports
a cloud session to local storage before continuing. Extract shared
validateCloudFork helper to reduce duplication. Use graceful exit
patterns in attach.ts and thread.ts to ensure proper cleanup.
ensureTitle was sending small-model requests with the same HEADER_TASKID
as the agent session. The gateway saw two different models (kilo-auto/small
and kilo-auto/frontier) under the same task and routed to both. Prefixing
the title sessionID with "title-" isolates it from the agent task.
- Reduce SSE heartbeat timeout from 90s to 15s to detect dead connections faster
- Add independent health poll every 10s as a second detection channel
- Kill entire process group (SIGTERM + SIGKILL fallback) instead of just the child process
- Add orphan detection in serve.ts so the server exits when the extension host dies
- Race Instance.disposeAll() against a 5s timeout to prevent hung MCP subprocesses blocking shutdown
migrate default model IDs from kilo/auto to kilo-auto/frontier and related references across the codebase. update defaults in gateway constants, VSCode provider, tests, UI defaults, and e2e seed. align docs and examples to use kilo-auto/frontier and kilo-auto/free. this is a breaking change for existing configurations
BREAKING CHANGE: update default model IDs to kilo-auto/frontier and kilo-auto/free
kilo/auto and kilo/auto-free no longer used as defaults; update all
references accordingly
BatchTool rebuilds its tool map from ToolRegistry.tools() without
passing the caller agent, so agent-level permission filtering is
bypassed. Add plan_exit to the DISALLOWED set to prevent non-plan
agents from triggering it via batch.