v1.28.0
- Core: Fix file write/replace tools freezing the event loop — diff computation (
build_diff_blocks) is now offloaded to a thread viaasyncio.to_thread, preventing the UI from hanging when editing large files - Shell: Fix
_watch_root_wire_hubsilently dying on handler exceptions — the watcher now catches and logs exceptions (matching the pattern inwire/server.py) and handlesQueueShutDowngracefully, preventing approval flow from silently breaking mid-session - Core: Skip O(n²) diff computation for huge files (>10 000 lines) — files above the threshold now show a summary block instead of computing a full diff, and unchanged files short-circuit immediately
- Wire: Add
is_summaryfield toDiffDisplayBlock(Wire 1.8) — marks diff blocks that contain a line-count summary instead of actual diff content, allowing clients to render them appropriately - Web: Render large-file diff summaries — when a diff block is marked
is_summary, the web UI shows a compact "File too large for inline diff" notice with line counts instead of attempting to compute a diff - Auth: Fix OAuth users getting "incorrect API KEY" when running skills or after idle — 401 errors now show a clear "please /login" message instead of the raw API error; the ACP layer correctly triggers re-login flow for VS Code extension users
- Web: Fix session title generation always failing for OAuth users — the title generator now uses OAuth tokens and refreshes them before calling the model
- Core: Add timeout protection for Agent tool and HTTP requests — all
aiohttpsessions now default to 120 s total / 60 s read timeout; the Agent tool gains an optionaltimeoutparameter (foreground default 10 min, background default 15 min); background agent tasks are markedtimed_outon expiry with proper notification semantics - Grep: Fix tool hanging and becoming uninterruptible — replaced blocking
ripgrepy.run()with async subprocess execution; the tool now responds to Ctrl-C immediately and has a 20-second timeout with partial result return - Grep: Add token efficiency improvements — default
head_limitof 250 withoffsetpagination,--hiddensearch with VCS directory exclusion,files_with_matchessorted by modification time, relative path output, and--max-columns 500for non-content modes - Grep:
line_number(-n) now defaults totruein content mode — line numbers are included by default so the model can reference precise code locations - Grep:
count_matchesmode now includes a summary in the message — e.g. "Found 30 total occurrences across 10 files." - ACP: Fix
ValueError: list.index(x): x not in listcrash when ACP is launched viakimi-codeorkimi-clientry-points (e.g. JetBrains AI Assistant) - Core: Fix OpenAI-compatible APIs (e.g. One API) returning 400 errors in multi-turn conversations when the server returns
reasoning_contentby default —reasoning_effortis now auto-set to"medium"when history contains thinking content andreasoning_keyis configured - Shell: Add
/themecommand and dark/light theme support — users with light terminal backgrounds can now switch to a light color palette via/theme lightortheme = "light"inconfig.toml; diff highlights, task browser, prompt UI, and MCP status colors all adapt to the selected theme - Core: Fix context overflow before compaction — tool result tokens are now estimated and included in the auto-compaction trigger check, preventing "exceeded model token limit" errors when large tool outputs push the context beyond the model limit between API calls
- Core: Add hooks system (Beta) — configure
[[hooks]]inconfig.tomlto run custom shell commands at 13 lifecycle events includingPreToolUse,PostToolUse,SessionStart,Stop, etc.; supports regex matching, timeout handling, and blocking operations via exit code 2 - Shell: Add
/hookscommand — list all configured hooks with event counts - Wire: Add
HookTriggeredandHookResolvedevent types (Wire 1.7) — notify clients when hooks start and finish executing, including event type, target, action (allow/block), and duration - Wire: Add
HookRequestandHookResponsemessage types — allow wire clients to subscribe to hook events and provide their own handling logic with allow/block decisions - CLI:
--skills-dirnow supports multiple directories and overrides default discovery — when specified, the directories replace user/project skills discovery (repeatable flag) - Shell: Fix notification messages leaking into session replay and export — background task notification tags (
<notification>,<task-notification>) are now filtered out when resuming a session (/sessions) and when exporting (/export) or importing (/import) conversation history - Web: The "Open" button in the workspace header now remembers the last-used application — clicking "Open" directly opens with the previous choice, while the dropdown arrow lets you pick a different app
- Web: Fix archived sessions count badge showing only the loaded page size — the badge now displays "100+" when more archived sessions exist beyond the first page
- Shell: Fix pasted text placeholders not expanded in modal answers — clipboard content pasted into approval or question panels is now correctly interpolated before being sent to the model
- Vis: Add
--network / -nflag — launch the visualizer on all network interfaces with auto-detected LAN IP display, matchingkimi webbehavior - Vis: Add
/visslash command — switch from the interactive shell to the tracing visualizer in one step, mirroring the existing/webcommand - Vis: Improve session list performance — async backend scanning, request concurrency limiting, and infinite-scroll pagination prevent browser freezes on large session stores
- Vis: Add 7 missing wire event types —
SteerInput,MCPLoadingBegin/End,Notification,PlanDisplay,ToolCallRequest, andQuestionRequestnow display with proper colors and summaries - Vis: Show token and cache details in StatusUpdate — each status update now displays context token count, max tokens, input token breakdown with cache hit rate, and MCP connection status
- Vis: Show structured tool call summaries —
ReadFile,Shell,Glob,Grep,Agent, and other tool calls display file paths, commands, or patterns inline instead of just the function name - Vis: Add System Prompt card in Context Messages — the
_system_promptentry is rendered as a dedicated blue card showing estimated token count and expandable full content - Vis: Show cache hit rate in session header — the stats bar now displays overall cache efficiency (e.g.,
89% cache) alongside token counts - Vis: Highlight slow operations — time deltas exceeding 10 s appear in amber and those exceeding 60 s in red, making performance bottlenecks immediately visible
- Vis: Prefer human-readable
messagefield in ToolResult summaries — results now show descriptive text like "Command executed successfully" instead of raw output - Vis: Show approval rejection feedback —
ApprovalResponsesummaries include the user's correction text when a tool call is rejected
Fetched June 4, 2026


