kimi-code/apps/kimi-code/CHANGELOG.md
github-actions[bot] b41f108584
Some checks are pending
CI / build (push) Waiting to run
CI / test (push) Waiting to run
CI / test-windows (push) Waiting to run
CI / lint (push) Waiting to run
CI / typecheck (push) Waiting to run
Nix Build / Check flake.nix workspace sync (push) Waiting to run
Nix Build / nix build .#kimi-code (push) Blocked by required conditions
Release / Native release artifact (push) Blocked by required conditions
Release / Release (push) Waiting to run
Release / Deploy docs (push) Blocked by required conditions
Release / Publish native release assets (push) Blocked by required conditions
ci: release packages (#1197)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-30 12:37:57 +08:00

109 KiB

@moonshot-ai/kimi-code

0.20.3

Patch Changes

  • #1207 14d9e98 - Refresh provider model lists automatically in the background instead of only at startup, so newly available models appear without restarting.

  • #1191 0df1812 - Fix provider error messages rendering as blank lines in the TUI when the server returns an HTML error page.

  • #1212 636ccc4 - Fix the web composer being hidden behind the mobile Safari toolbar and the page auto-zooming when the composer is focused.

  • #1068 c82dcf9 - Glob now uses ripgrep, so it respects .gitignore by default, supports brace patterns, returns only files, and keeps partial results with a warning when some directories are unreadable.

  • #1209 0635387 - Align malformed tool call argument handling with schema validation fallback.

0.20.2

Patch Changes

  • #1166 dfcfdfd - Add an optional exclude_empty parameter to the session list API to omit sessions that have no messages.

  • #1156 794db55 - Cap compaction output at 128k tokens by default to avoid provider max_tokens errors.

  • #1129 d02b5c4 - Fix compaction ignoring the configured max output size.

  • #1188 db5fbc5 - Fix unnecessary full-screen redraws when typing in the input box or toggling the slash panel.

  • #1187 97f9263 - Fix debug timing output lingering after undoing a turn.

  • #1163 ff6e8bb - Fix the web composer occasionally keeping typed text after sending the first message of a new session.

  • #1189 04b3492 - Fix working tips getting squeezed against the agent swarm progress bar.

  • #1159 23a553b - In the bundled web UI, /new and /clear are now aliases that open the session onboarding composer and focus the input. iOS auto-zoom is prevented by keeping text inputs at 16px instead of disabling viewport scaling.

  • #1186 821847c - Add KIMI_CODE_CUSTOM_HEADERS for custom outbound LLM request headers and send the User-Agent header to non-Kimi providers. Set KIMI_CODE_CUSTOM_HEADERS to newline-separated Name: Value lines.

  • #1186 821847c - Route managed Kimi Code models on the Anthropic-compatible protocol through the beta Messages API.

  • #1170 cf558cd - Recover from provider 413 context overflows by compacting before retrying.

  • #1170 cf558cd - Support the Anthropic-compatible protocol for managed Kimi Code, including video input.

  • #1186 821847c - Add provider type and protocol attributes to turn and API error telemetry.

  • #1155 54baf5d - Upgrade web markdown renderer dependencies (katex, markstream-vue, shiki) for bug fixes and performance improvements.

  • #1162 b070846 - Rework the web ask-user-question card into a step-by-step wizard so multi-question navigation and the final Submit action are easier to see.

  • #1179 fc3d69d - Add a completion sound and question notifications to the web UI, with separate Settings toggles for completion notifications, question notifications, and sound. Question notifications default off so question text only reaches your desktop after you opt in.

  • #1165 f3b1532 - Replace the web composer attach button's plus icon with an image icon.

  • #1167 c63edd5 - In the bundled web UI, a new session is now created only when the first message is sent, so + New without a workspace opens the composer instead of making an empty session.

  • #1166 dfcfdfd - Hide unused "New Session" entries from the web session list by default.

  • #1181 1dab2c2 - Restore each session's scroll position when switching back to it in the web UI.

  • #1181 1dab2c2 - Keep the open side panel when switching between sessions in the web UI.

  • #1166 dfcfdfd - Remove the /sessions slash command from the web UI; the sidebar already covers session browsing.

  • #1181 1dab2c2 - Keep unsent composer attachments scoped to their session in the web UI, so switching sessions no longer leaks them into another session's next message.

  • #1161 d968642 - Show the first five sessions per workspace in the web sidebar instead of ten.

  • #1181 1dab2c2 - Scope the web composer's up/down input history to the current session instead of sharing it across all sessions.

0.20.1

Patch Changes

  • #1125 e9a3b7c - Add an update alias for the kimi upgrade command. Run kimi update to upgrade to the latest version.

  • #1122 820d77a - Show the done / in progress / pending breakdown of hidden todos in the collapsed todo panel.

  • #1131 76c643b - Cap completion tokens to the remaining context window for chat-completions providers, avoiding context-overflow and invalid max_tokens errors.

  • #1120 e736349 - Add optional feedback attachments for diagnostic logs and codebase context.

  • #1135 bf51fb7 - Fix the local server failing to start on Windows after the first run because the persistent token file's synthesized mode was rejected as too permissive.

  • #1102 9c97161 - Harden the default system prompt and built-in tool descriptions: stop the agent from blocking on background tasks it should let run, keep its guidance matched to the tools each profile actually provides, and surface tool-result details (fetched-page mode, Grep match totals) it previously missed.

  • #1127 184acf5 - Plugins can now declare hooks in their manifest to run scripts on lifecycle events.

  • #1128 0886bff - Add a --allowed-host flag to kimi server run that lets extra Host header values pass the DNS-rebinding check, and include allow guidance in the 403 error message. Pass --allowed-host to allow an extra host.

  • #1119 b0b2aee - Keep the terminal responsive in long conversations by caching rendered message lines.

  • #1119 b0b2aee - Keep long sessions responsive by retaining only recent turns in the transcript and collapsing older steps within each turn.

  • #1121 81ba48f - Make the web chat input grow with its content and add an expandable editor for longer messages.

  • #1133 f1c8175 - Fix the /web slash command not carrying the server token, so the opened web UI signs in automatically and the token is shown before the terminal exits.

0.20.0

Minor Changes

  • #1079 2db5fc2 - Add shell mode for running shell commands. Type ! in the input box to enable it. The command output is visible to the AI. For long-running commands, press Ctrl+B to move them to the background. For example, you can run !gh auth login to sign in to the GitHub CLI without opening a new terminal, so Kimi can use gh.

  • #1088 0030f76 - Add a confirmation prompt before installing third-party plugins.

  • #1066 3554f7e - Show update badges on the /plugins Installed tab, where Enter now installs the available update and I opens plugin details.

  • #1025 5ef66dd - Redesign /plugins as a single tabbed panel: Installed (manage installed plugins — toggle, remove, MCP, details, reload), Official (Kimi-maintained marketplace plugins), Third-party (marketplace plugins from other publishers), and Custom (install straight from a GitHub URL, zip URL, or local path). Tab / Shift-Tab switch tabs. The Official and Third-party catalogs load lazily, so /plugins opens instantly and keeps working offline — a marketplace fetch failure is shown inline instead of closing the panel. The tab strip is shared with the /model provider tabs via the new renderTabStrip helper.

  • #1006 60dfb68 - Add server authentication and safe --host exposure. The local server now requires a per-start bearer token on all API and WebSocket calls (the CLI reads it automatically), enforces Host/Origin checks, and gains --host with a public-binding hardening tier: mandatory KIMI_CODE_PASSWORD, TLS (or --insecure-no-tls), auth-failure rate limiting, disabled remote shutdown/terminals, and security response headers. See packages/server/SECURITY.md.

  • #1040 6664038 - Replace silent AGENTS.md truncation with a visible warning in the TUI status bar and web UI.

  • #1101 3ea6ac2 - Show the plan body and approach choices in the plan review card when exiting plan mode in the web UI.

  • #1103 18f7c34 - Show a line-by-line diff when the agent edits or writes a file in the web chat.

Patch Changes

  • #1072 a86bb97 - Improve the image paste hint.

  • #1076 500677a - Fix Ctrl-C during compaction so it clears a pending editor draft first instead of cancelling immediately.

  • #1067 0e227ba - Fix explore subagents silently losing git context when git commands time out or the directory is not a repository.

  • #1075 3aaf1e5 - Fix a startup crash on Linux caused by an unhandled native clipboard error.

  • #1094 8ee5c0f - Fix the terminal window repeatedly losing focus on Linux Wayland, which broke IME input.

  • #1057 ee69e16 - Fix MCP server working directories when sessions are hosted by the web server.

  • #1064 a752a53 - Fix truncated skill descriptions missing an ellipsis in the model's skill listing.

  • #903 bbd8a1a - Fix kimi web and /web failing to start the background server daemon on Windows with spawn EFTYPE when the CLI is installed via npm/pnpm or run from source. The official single-binary install script was not affected.

  • #1070 ff17715 - Stop auto-dismissing questions in the web UI after 60 seconds so they wait for the user's answer.

  • #1097 27ef516 - Add a hint to the per-turn step limit error pointing users to the loop_control.max_steps_per_turn config option.

  • #1062 ea6a4bf - Preserve full tool output logs when previews are truncated and link background task completion notifications to saved output.

  • #1086 fe667d7 - /reload now refreshes the assistant's view of plugin skills, so plugin changes take effect in the current session instead of requiring a new one.

  • #1081 8fc6aa5 - Sync session title changes across all connected clients in server mode.

  • #1078 75ca3b2 - Add Ctrl+U and Ctrl+D as page up and page down shortcuts in the task output viewer.

  • #1069 d18aa16 - Reduce streaming redraw cost for long assistant messages with code blocks.

  • #1112 6a97d0b - Add a copy button to user messages in the web chat.

  • #1035 ea03f30 - Render LaTeX display math ($$…$$) in the web chat via KaTeX. Single $ is intentionally left as literal text, so prices, env vars, and shell paths (e.g. $PATH, $5/$10, $HOME/bin) are never swallowed as a formula.

  • #1084 d6e5246 - Page the web session list per workspace so the first screen no longer fetches every session up front.

  • #1113 6194d3f - Keep the web session sidebar from re-rendering on every streaming token. The event reducer now reuses the sessions array reference for events that do not change sessions, so the sidebar computeds (sessionsForView / workspaceGroups / mergedWorkspaces) are no longer dirtied by unrelated high-frequency events.

  • #1087 884b65a - Fix duplicate session snapshot reloads in the bundled web UI during resync.

  • #1109 d554f9a - Show the full accumulated progress of a subagent in its detail panel, with concise tool-call summaries instead of raw JSON.

  • #1065 4b837d6 - Create missing parent directories automatically when writing a file.

0.19.2

Patch Changes

  • #999 6b68aa8 - Add -c as a shorthand for --continue.

  • #1028 be77d5d - Show a transient footer hint when an image is detected in the clipboard, displaying the platform-appropriate paste shortcut.

  • #1004 d70c3a8 - Show the command in running Bash tool cards and allow expanding it with Ctrl+O before the result arrives.

  • #1009 e47de61 - Add a Ctrl+T shortcut to expand and collapse a truncated todo list.

  • #1028 be77d5d - Fix stale rows occasionally leaving duplicate input boxes after tall content shrinks.

  • #1028 be77d5d - Fix inline images being rendered as broken escape sequences in the transcript.

  • #1027 c240bfa - Fix resume not realigning a tool call that was interrupted mid-history. The synthetic interrupted result is now closed in place at the next step boundary, so later turns and deferred messages keep their recorded order instead of only the trailing exchange being repaired. The /messages wire transcript reducer mirrors the same closure so its folded length stays aligned with live history, preventing the later turn from being duplicated/reordered. Replay also drops a tool result whose call is no longer awaiting one, so a stale interrupted result left at the log tail by an older resume of a damaged session is not re-applied as a duplicate.

  • #1012 fd16ffb - Show subcommand suggestions after Tab-completing a slash command name.

  • #1012 fd16ffb - Fix the Tab key unexpectedly opening the file completion list.

  • #1044 9d197e0 - Fix clipboard copy actions in the web UI when served over plain HTTP.

  • #1032 a753b05 - Fix code blocks nested inside list items rendering blank in the web chat after a turn finishes generating.

  • #1015 83384ee - Fix the composer's ↑/↓ input-history recall doing nothing right after the first message of a new session. The history is now persisted to localStorage and re-read on mount, so the docked composer no longer starts empty when it takes over from the empty-session composer. Slash commands are now recorded too — both typed-and-submitted and ones picked from the slash menu — so they can be recalled like plain messages.

  • #1003 e15edfd - Fix the web question prompt missing the free-text Other option.

  • #1056 b93e936 - Fix yolo mode in the web app auto-approving plan reviews and sensitive file access.

  • #971 b84704b - Read large text files in bounded memory and read tail lines without scanning whole files.

  • #1020 9c553e4 - Add an Alt+S shortcut in the model picker to switch the model for the current session only, without saving it as the default.

  • #1043 27df39c - Fix web chat stop actions so stale prompt ids fall back to cancelling the active session.

  • #1036 866b91c - Reorganize the web app's components into area subdirectories (chat/settings/dialogs/mobile) and refresh the component path comments.

  • #1042 dc6b9ef - Add a development-mode indicator to the web sidebar for local development.

  • #1047 98d3e5b - Keep the web sidebar's workspace order stable and let workspaces be reordered by drag-and-drop, persisted locally instead of following recent activity; sessions now also float to the top of their group as soon as a new message arrives.

  • #1034 603a767 - Extract the composer's image/video attachment handling into a reusable composable.

  • #1031 2bfd686 - Extract the composer's text state and per-session draft persistence into a reusable composable.

  • #1011 fb780fc - Extract the composer's shell-style input-history recall into a reusable composable.

  • #1030 661c1fb - Extract the composer's @-mention menu logic into a reusable composable.

  • #1026 318c964 - Extract the composer's slash-command menu logic into a reusable composable.

  • #1045 ac1882f - Persist the collapsed state of workspace groups in the web sidebar across page reloads.

  • #1001 ea1b33b - Extract pure turn-rendering helpers out of the chat pane into their own module.

  • #1010 a2650f8 - Extract the beta conversation outline (table of contents) into its own component.

  • #998 3e4793d - Extract the workspace group rendering out of the sidebar into its own component.

  • #985 92c2cf0 - Allow the web sidebar and detail panel to be resized up to the available viewport width, keeping their resize handles reachable on narrow windows.

  • #1033 b1e6b64 - Optimize the loading tips display.

0.19.1

Patch Changes

  • #992 7341fb4 - Fix ACP editors such as Zed failing to start a new thread.

  • #984 da81858 - Clear all per-session state when a session is archived or removed, so archived sessions no longer leave orphaned data behind.

  • #978 d4ae02d - Fix the web sidebar's unread dots getting out of sync across browser tabs.

  • #979 8c6cade - Consolidate web client localStorage access and split the root state store and app shell into focused composables.

0.19.0

Minor Changes

  • #812 c0eeca2 - Added the ability to add extra workspace directories:

    • Use the /add-dir <path> command to add extra working directories to the current session, or remember them for the project.
    • Use kimi --add-dir <path> to add them on startup.
    • Project-level local config is now managed in .kimi-code/local.toml; we recommend adding it to your .gitignore.
  • #975 c5c1834 - Speed up session snapshot loading with a direct disk reader and a request timeout safeguard, keeping the previous path as a legacy fallback.

Patch Changes

  • #910 7644f10 - Fix provider requests failing when restored conversation history contains empty text content blocks.

  • #963 4292ae9 - Surface provider safety-policy blocks instead of silently treating them as completed turns, and prevent the context token count from dropping to zero after a filtered response.

  • #970 2730079 - Detect the real image format from file contents when reading media, so a mismatched filename extension no longer produces a data URL the model API rejects.

  • #977 d521932 - Stop showing unread dots on cancelled or failed sessions in the web sidebar.

  • #957 b57fc90 - Fix commands flashing an empty console window on Windows.

  • #821 ba64072 - Allow long-running foreground commands and subagents to be moved into background tasks with Ctrl+B, and inspect them via the /tasks panel.

  • #812 c0eeca2 - Polish file mention UX.

  • #974 d434d8f - Unify image format detection when sniffing fails.

  • #958 98905eb - Show longer branch names in the web chat header and expose the full name on hover.

  • #964 4223739 - Keep the web page title fixed instead of changing with the session or workspace name.

  • #973 3b9938b - Consolidate web client localStorage access and decouple appearance/notification state into dedicated modules.

0.18.0

Minor Changes

  • #888 58898de - Add an environment variable to cap AgentSwarm concurrency during the initial ramp, so large swarms do not trip provider rate limits as easily.

  • #895 495fe8c - Add instant session search to the web sidebar, filtering by title and the last user prompt.

Patch Changes

  • #896 de610de - Fix the web workspace session count so it drops to 0 after archiving the last session instead of staying at 1.

  • #876 49183d8 - Suggest /reload alongside /new in plugin-change hints.

  • #867 d1dc2a3 - Redesign the web OAuth login dialog: lead with a single "Authorize in browser" button that opens the verification link with the device code already embedded, demote manual code entry to a clearly secondary fallback, and drop the duplicate open-browser and cancel controls so the order of steps is unambiguous.

  • #867 d1dc2a3 - Fix the web login slash command description to match the browser authorization flow.

  • #893 d7ec056 - Add scroll-up lazy loading for older messages in the web chat session view, and fix the "new messages" pill overlapping the composer dock.

  • #882 8ab9e96 - Fix the web app only loading the 20 most recent sessions; it now follows pagination so older sessions are reachable.

  • #889 23277a5 - Show the connected server version in the web settings General tab.

  • #881 7bc3d99 - Keep the highlighted web slash command visible while navigating a long slash menu.

  • #878 a74a6b7 - Allow long web slash command names and descriptions to wrap without overflowing the slash menu.

  • #878 a74a6b7 - Fix web slash skill selection sending immediately and allow slash search to match skill names by substring.

0.17.1

Patch Changes

  • #861 bd09795 - Prevent the web login dialog from closing when clicking the backdrop.

  • #860 0e2877b - Stop the background local server from locking the directory it was started in.

  • #860 0e2877b - Fix the local server failing to start in the background on the native binary.

  • #861 bd09795 - Group the default model dropdown in web settings by provider.

0.17.0

Minor Changes

  • #625 9a8fea5 - Add the server-hosted web UI and the CLI commands that power it:

    • kimi server to start, stop, and manage the local server.
    • kimi web to open the server-hosted web UI in a browser.
    • Server REST and WebSocket APIs for the web client.
    • Web chat layout, session list, auto-scroll, and related behaviors.

Patch Changes

  • #838 843a731 - Show the underlying connection error when OAuth token refresh fails after internal retries, instead of prompting for login. Token refresh failures are no longer re-retried at the agent loop level.

  • #849 254f946 - Skip debug TPS when the output stream is too short to measure reliably.

  • #833 a71b2e3 - Restore the turn counter from persisted loop events on resume so post-resume turns no longer reuse turn ids that already appear in history.

  • #853 05fe759 - Fix the web login page and no-workspace conversation startup flow.

0.16.0

Minor Changes

  • #788 efdf8a1 - Add a built-in kimi vis command that launches the session visualizer in your browser, pointed at your local sessions. Supports --port/--host, --no-open, and kimi vis <sessionId> deep-links.

Patch Changes

  • #790 d0d5821 - Stop Anthropic-compatible providers from reading ambient Anthropic shell credentials and custom headers.

  • #809 6f442bd - Add configurable banner display frequencies with local display state.

  • #807 b45672c - Close wrapped output streams when buffered readers are destroyed.

  • #813 7b5b818 - Fix repeated compaction handling when context remains over the blocking threshold.

  • #801 ff332be - Polish queue pane styling

  • #802 aa1896c - Reduce the maximum height of the /btw side panel from half to one-third of the terminal.

  • #805 3e6196e - Project session replay ranges over rendered replay records instead of raw persisted records.

  • #804 299b9fc - Prevent session shutdown from resuming the agent when stopping background tasks.

  • #823 90fc04b - Remove redundant LLM request logging context plumbing.

0.15.0

Minor Changes

  • #779 2746c71 - Add an all-sessions picker view with name search, paginated browsing, and clipboard-ready resume commands for sessions in other working directories.

  • #744 18f299f - Add support for legacy SSE MCP servers alongside stdio and streamable HTTP transports.

Patch Changes

  • #777 4516f62 - Clarify AGENTS.md prompt guidance and mark truncated instruction files.

  • #780 8a92db6 - Prompt the CLI to show one brief same-language status sentence before non-trivial tool calls.

  • #786 e10b25f - Stop writing resume version markers into persisted agent metadata.

  • #768 c6a9967 - Recover resumed sessions when an interrupted tool call result was not recorded.

  • #775 3fa1b8e - Optimize the npm packaging system.

  • #343 73be7ba - Repair mismatched JSON Schema types emitted by Xcode 26.5 MCP server for Moonshot compatibility.

  • #777 4516f62 - Collapse hidden directories in the workspace prompt and explain how to inspect them.

  • #766 9cef896 - Clarify that compaction summaries must be emitted in the final answer.

  • #765 046856b - Read media files using header-detected types before falling back to media extensions.

  • #779 2746c71 - Show the all-sessions toggle hint when the current working directory has no sessions.

  • #785 4578f05 - Include the skill's directory on the loaded-skill context block so the agent can locate a skill's bundled resources (scripts, templates) after it is invoked.

  • #784 a562ef5 - Decouple agent skill access from session-specific registry implementations.

  • #772 d47e699 - Do not carry obsolete legacy loop, background, plan, yolo, or unknown experimental flags into migrated config files.

  • #783 e2a407c - Keep TUI components within narrow terminal widths by wrapping, compacting, or truncating lines that could exceed the render width.

  • #776 ecd7a0a - Resolve model capabilities through a static lookup instead of instantiating a temporary provider.

  • #767 a355f2a - Prioritize clearing draft editor text before Ctrl-C cancels an active stream.

  • #787 1eb363f - Extend the same-language rule to the model's reasoning, so thinking follows the user's language while keeping code and technical terms in their original form.

0.14.3

Patch Changes

  • #713 f874251 - Refresh provider model metadata before opening the model picker.

0.14.2

Patch Changes

  • #683 ad239cb - Allow --auto, --yolo, and --plan to be combined with --session or --continue by applying the requested mode to the resumed session.

  • #690 7f0dde2 - Fix endless desktop notifications in iTerm2 by only sending terminal progress sequences to terminals that support them.

  • #651 c39c625 - Qualify sub-skill names with their parent prefix and expose sub-skills as dotted slash commands in the TUI.

  • #617 911e7c3 - Show completed and cancelled compaction records correctly when resuming a session.

  • #676 dcf3075 - Stream foreground Bash stdout and stderr while commands are still running.

  • #692 7ca9bdf - Skip re-entering plan mode when resuming a session that is already in plan mode (previously failed with "Already in plan mode"), and stop re-applying --auto/--yolo/--plan startup flags when switching sessions through the /sessions picker.

  • #675 d1ba145 - Sync custom registry provider additions, removals, and rotated registry keys during startup refresh.

  • #689 8d251f8 - Drop invalid config.toml sections with a warning instead of failing to start.

0.14.1

Patch Changes

  • #643 4e5043b - Require AgentSwarm tool calls to run alone in a model response.

  • #631 2961425 - Wrap long command and skill descriptions in the autocomplete menu onto a second line instead of cutting them off.

  • #661 0927f79 - Cancel active turns during session shutdown so foreground shell commands do not outlive prompt-mode exits.

  • #604 7ec738c - Fix premature stream close errors when shell processes time out or are killed.

  • #632 d8cdebf - Degrade unsupported audio/video to placeholder text and reattach tool result media instead of silently dropping them.

  • #628 0ee9106 - Fix ACP file reads and edits for Windows workspaces opened through IDE clients.

  • #658 0381329 - Send OpenAI Responses system prompts as request instructions.

  • #654 ff80327 - Propagate configured execution environment overrides across spawned processes.

  • #644 a58b5b2 - Polish builtin skills.

  • #649 a2c5e1b - Add runtime support for dynamic MCP server updates, reference skills, replay timestamps, and Node file uploads.

  • #631 2961425 - Find slash commands by their aliases in autocomplete — typing /clear now suggests new (clear).

  • #648 54302ad - Prevent overlapping interactive agent requests from using the wrong active agent.

  • #641 30459af - Stop background tasks by default when sessions close.

  • #645 1b58aa8 - Add a YOLO choice when starting swarm tasks from Manual mode.

  • #655 1e2e679 - Display a tips banner below the welcome panel on startup.

0.14.0

Minor Changes

  • #607 b253a82 - Add an Interrupt hook event that fires when the user interrupts a turn (e.g. pressing Esc), letting hooks observe the turn stopping instead of getting stuck on a working state.

Patch Changes

  • #626 856ec00 - Preserve image outputs from tools when using OpenAI-compatible chat completions.

0.13.1

Patch Changes

  • #610 b747c6a - Add Claude Fable 5 support to the Anthropic provider.

  • #615 494554e - Add an interactive undo selector and clearer undo-limit messages.

  • #598 32d7080 - Clarify active skill prompts so loaded skills are no longer represented as system reminders.

  • #595 1580f35 - Fix Kimi Datasource to use the matching OAuth credentials and service endpoint for the active Kimi Code environment.

  • #619 1fbe0e4 - Fix goal marker text overflowing terminal width.

  • #612 4603d8a - Prevent forking sessions during active turns and consolidate wire protocol definitions into a shared internal package.

  • #540 2ebe387 - Tighten file tool guidance to route incremental edits through Edit.

  • #606 a1b419a - YOLO mode no longer asks before writing or editing files outside the working directory.

0.13.0

Minor Changes

  • #484 f863127 - Add custom color themes. Define your own palette as a JSON file in ~/.kimi-code/themes/, or generate one with the built-in /custom-theme skill command.

  • #582 d85dc0b - Add /import-from-cc-codex to import selected Claude Code and Codex instructions, Skills, and MCP settings.

  • #593 40506f4 - Show available plugin updates in the marketplace. An installed plugin whose marketplace version is newer than the local version now renders an update <local> → <latest> badge (and updates in place on Enter); up-to-date plugins show installed · v<version>. The marketplace version served in dev and written by the CDN build is now stamped from each plugin's manifest so "latest" stays accurate.

Patch Changes

  • #587 0abde86 - Clarify grouped subagent progress with active status breakdowns and elapsed time.

  • #594 f2863af - Fix device login to keep the URL and code visible when the browser cannot be opened.

  • #591 e48234a - Fix Windows builds and development launches that could fail when package binaries resolve to command shims.

  • #586 7cb4a23 - Truncate queued message display to a single line with ellipsis when it exceeds terminal width.

0.12.1

Patch Changes

  • #584 11bb62c - Allow obsolete experimental config entries to remain without blocking startup.

  • #581 aa3471f - Pass through xhigh reasoning effort for OpenAI-compatible chat completions requests.

0.12.0

Minor Changes

  • #569 d7407b0 - Enable micro compaction by default while keeping its opt-out flag.

  • #531 b47734c - Detect Homebrew installations and use brew upgrade kimi-code for updates instead of falling back to npm.

  • #487 4d11394 - Honor the standard HTTP_PROXY / HTTPS_PROXY / ALL_PROXY / NO_PROXY environment variables, including SOCKS proxies, for all outbound traffic.

  • #569 d7407b0 - Make goals, background questions, and sub-skill discovery available without experimental opt-ins.

  • #424 72c4b0a - Add the /swarm command for running agent swarms with live progress and rate-limit-aware retries.

Patch Changes

  • #395 879a7ee - Fix ACP slash skill routing, bootstrap context reads, file and permission edge cases, subagent event handling, and stale-file edit messaging.

  • #529 3b62b12 - Detect Git Bash installed through Scoop and other Git shims on Windows.

  • #547 3765a49 - Rework file reference completion in the TUI.

  • #537 8d0c91f - Wrap long single-line shell commands in approval prompts so the full command remains visible.

  • #552 db82e33 - Fix goal resume behavior by restoring goal state from agent records.

  • #521 9aba465 - Fix the /mcp status panel border being broken by multi-line MCP server errors, which are now folded onto a single row.

  • #543 0c3d556 - Fix session workdir mismatch on Windows caused by inconsistent path separators.

  • #544 5cff6d6 - Load Kimi-specific user Skills and global agent instructions from KIMI_CODE_HOME when it is set.

  • #536 b785e26 - Show full plan cards directly and remove the Plan card keyboard shortcut.

  • #555 41ebe9f - Improve goal mode outcome handling with follow-up messages, safer error pauses, and clearer TUI transcript display.

  • #506 f09ec7b - Remove the per-turn auto-compaction limit so long conversations can keep compacting instead of failing early.

  • #473 3787c30 - Allow the startup session picker to exit with repeated Ctrl-C or Ctrl-D.

  • #210 d995928 - Show the underlying error when migration fails.

  • #541 2db1bd9 - Fix thinking text and tool output display for subagents.

0.11.0

Minor Changes

  • #468 df4f2d6 - Add experimental sub-skill discovery gated by the KIMI_CODE_EXPERIMENTAL_SUB_SKILL environment variable. Ships the sub-skill builtin bundle (sub-skill.review, sub-skill.consolidate) for inventorying and consolidating skills into hierarchical groups.

  • #480 f555c89 - Show built-in skills as direct slash commands and group them ahead of external skill commands.

  • #458 93eb70a - Migrate still-relevant environment variables from kimi-cli:

    • KIMI_MODEL_TEMPERATURE, KIMI_MODEL_TOP_P — sampling parameters applied globally to any kimi provider (not tied to KIMI_MODEL_NAME).
    • KIMI_MODEL_THINKING_KEEP — Moonshot preserved-thinking passthrough (thinking.keep), injected only while Thinking is on.
    • KIMI_CODE_NO_AUTO_UPDATE (legacy alias KIMI_CLI_NO_AUTO_UPDATE) — fully disables the update preflight (no check, background install, or prompt).
  • #470 aa610e2 - Use a fixed 30-minute timeout for subagents and show concise resume instructions when they time out.

Patch Changes

  • #474 658e465 - Show the upcoming-goal confirmation with the same accent treatment as goal lifecycle messages.

  • #474 658e465 - Fix slash command autocomplete so goal text can be submitted when the cursor is before existing text.

  • #474 658e465 - Fix queued goals so failed promotion attempts do not lose or duplicate queued work.

  • #456 3a98713 - Show concise provider filtering errors when responses are blocked before visible output.

  • #442 960a0e2 - Show "unknown command" instead of "too many arguments" when an invalid subcommand is entered.

  • #474 658e465 - Fix upcoming-goal queue handling while editing or pasting queued goals.

  • #457 1fe5d55 - Clamp OpenAI Chat Completions xhigh and max thinking effort to high unless the model supports xhigh on v1/chat/completions.

  • #464 4f9977d - Preserve thinking effort when compacting long conversations.

  • #474 658e465 - Ask before starting goals in YOLO mode so users can switch to Auto for unattended work.

  • #461 2af19e2 - Refresh provider model metadata when capabilities change without model ID changes.

  • #474 658e465 - Start upcoming goals immediately when there is no active goal to wait for. Support multiline edits when managing upcoming goals.

  • #474 658e465 - Highlight goal queue subcommands while typing slash commands.

0.10.1

Patch Changes

  • #443 15a4c64 - Fix a crash when starting a goal in the TUI.

0.10.0

Minor Changes

  • #433 85338e9 - Add the built-in update-config skill — you can now have Kimi edit its own config files.

  • #420 86a42a2 - Add persistent experimental feature toggles and a TUI panel that applies confirmed changes by reloading the current session.

  • #383 15d71b5 - Add /reload to reload the current session and apply updated config files, plus /reload-tui to reload only TUI preferences.

  • #393 beb12ac - Users now can prepare several goals for the agent to work on sequentially. The agent will pick up the next goal from the queue once the current goal is completed. Use /goal next <objective> to queue a goal and /goal next manage to review and change the queue interactively.

  • #431 6a4e4c7 - Add a doctor command for validating Kimi Code configuration files.

Patch Changes

  • #393 beb12ac - Stop carrying active and queued goals into forked sessions.

  • #408 6303bd2 - Point session error diagnostics to the /export-debug-zip command.

  • #398 b2801c4 - Set terminal tab titles without renaming the running process.

  • #403 d645d7e - Start automatic background updates as soon as startup's fresh update check finds a newer version.

  • #387 6e74027 - Lowercase the stale file content message in edit tool errors.

  • #428 853c5fc - Ensure Nix-packaged CLI builds can find ripgrep and fd.

  • #411 4598262 - Normalize malformed Responses stream rate limit errors as provider rate limit failures.

  • #405 07e2e0f - Refresh the update target before showing foreground update prompts so the displayed version matches the install.

  • #399 232ed87 - Keep managed OAuth credentials scoped to their configured authentication and API endpoints.

  • #407 07609b4 - Set the CLI process title to kimi-code during startup.

  • #419 d0f8e24 - Document the Git Bash prerequisite for Windows installs.

  • #430 be0da5f - Fail early when Git Bash is missing on Windows before starting CLI sessions.

0.9.0

Minor Changes

  • #368 3eafa79 - Add @moonshot-ai/acp-adapter and the kimi acp subcommand: kimi-code now speaks Agent Client Protocol 0.23 over stdio so IDEs (Zed, JetBrains AI Chat, custom clients) can drive sessions directly — coverage matrix, Zed configuration and breaking pre-release notes are in kimi acp Subcommand Page.

  • #338 ba7dd73 - Add /btw for side-channel conversations without steering the active main turn.

  • #357 179aecf - Log enabled experimental flags at startup.

  • #378 e0d28b4 - Allow /btw to open the side-channel panel before entering a question.

Patch Changes

  • #246 7d1f889 - Fix external editor (Ctrl+G) on Windows by removing /bin/sh dependency and using platform-aware shell quoting for temp file paths.

  • #365 6a22523 - Fix goal budget tool schemas for OpenAI-compatible providers.

  • #365 6a22523 - Use the OpenAI completion token field required by newer Chat Completions models.

  • #380 8639105 - Resume saved subagents lazily when they are accessed.

  • #339 a6b16ce - Allow SDK runtime creation to use a separate RPC client while preserving local CLI startup.

  • #363 90879f3 - Unify the interaction and visuals across TUI dialogs and selectors.

  • #365 6a22523 - Use configured model output limits for completion token caps.

0.8.0

Minor Changes

  • #319 fe7db4a - Append the current todo list as markdown to compaction summaries before writing them to history.

  • #334 eeefa98 - Add background automatic upgrades, which can be disabled in tui.toml.

  • #270 ac37d74 - Add experimental goal mode for longer tasks that need more than one turn. Turn it on with KIMI_CODE_EXPERIMENTAL_GOAL_COMMAND=1 before you start Kimi.

    Use /goal <objective> in the TUI when you want Kimi to keep working on one task across turns. For example:

    /goal Fix the failing checkout test
    

    Kimi shows the goal in the TUI and keeps progress visible while it works. Use /goal status, /goal pause, /goal resume, /goal cancel, and /goal replace <objective> to manage the goal. This feature is still experimental. Try it and tell us what would make it more useful.

  • #315 191059d - Add background structured questions so agents can continue while waiting for user answers.

  • #313 3c5dee8 - Add kimi provider CLI subcommand with add, remove, list, and catalog list / catalog add actions, so providers from a custom registry (api.json) or the public models.dev catalog can be imported and managed without launching the TUI.

  • #277 a217ff0 - Add /undo slash command to withdraw the last prompt from conversation history, and keep replay records in sync when a prompt is undone.

  • #334 eeefa98 - Add a kimi upgrade command for manually checking and upgrade Kimi Code CLI.

  • #336 7cda9c3 - Add approval lifecycle hook events for observing pending and completed permission prompts.

Patch Changes

  • #285 573c56e - Consolidate background task management under the agent background runtime.

  • #314 6de3d97 - Prevent modified keyboard release sequences from appearing after exiting the CLI.

  • #335 7284f30 - Fix custom registry provider handling during re-import. Prevent loss of multi-provider entries and remove stale providers along with their model aliases and default model references.

  • #311 80164c2 - Normalize glob patterns before brace expansion to prevent incorrect path matching.

  • #247 58e2915 - Fix a crash in the /sessions picker on very narrow terminals by clamping every rendered line to the terminal width.

  • #317 1f8c36a - Fix tool output preview rendering: trim trailing empty lines, append ellipsis to multi-line Bash command headers, and truncate long single-line output by visual wrapped lines instead of raw newline count.

  • #145 d912053 - Fix Git Bash path detection on Windows by also searching usr\bin\bash.exe locations, which is where bash lives in many Git for Windows installations where bin\bash.exe does not exist.

  • #310 a4511ff - Show the full model name in the footer status bar instead of truncating the provider prefix.

  • #283 91b292e - Allow glob searches to target explicit absolute paths outside the workspace.

  • #223 811f252 - Show MCP server summary in the welcome panel and add configuration hints in the /mcp command output.

  • #229 fb35bca - Replace chalk named color with theme-aware hex in session-directory warning.

  • #303 3d7e20e - Point users to /provider instead of the removed /connect command in the welcome screen and the no-models-configured hint.

  • #135 0071b63 - Fix slash-activated skills not being recognized by the model due to missing system reminder wrapper.

  • #330 7a47045 - Allow subagents to use custom tools registered on their parent agent.

  • #333 1178c5c - Remind the model to refresh TodoList during long-running tasks and strengthen TodoList progress-tracking guidance.

  • #327 8809f3e - Fix cross-provider replay failures from incompatible tool call IDs and unsigned Claude thinking history.

0.7.0

Minor Changes

  • #232 a24bfb1 - Add KIMI_MODEL_ADAPTIVE_THINKING (and a matching adaptive_thinking model-alias field) to force adaptive thinking (thinking: { type: 'adaptive' }) on or off, overriding the Anthropic model-name version inference. This lets custom-named compatible endpoints that back an adaptive-capable model opt in even when the model name does not encode a parseable Claude version.

  • #264 42bb914 - Add /provider command for managing AI providers, support custom registry imports, and introduce a tabbed model selector.

  • #204 ee69d0a - Render scheduled reminders distinctly in the TUI, expose cron fired events to SDK clients, and report cron fire times with local timezone offsets.

Patch Changes

  • #282 a580cd3 - Fix glob pattern backslash escaping and include match count in truncation messages.

  • #260 178827d - Polish a small TUI visual interaction.

  • #267 e2e1728 - Report truncated compaction summaries clearly and apply valid completion token budgets across supported providers.

  • #274 a1dfbfe - Clarify Kimi Platform API key login labels and prompt details.

0.6.0

Minor Changes

  • #212 2bbea75 - Add a KIMI_MODEL_* environment-variable channel that lets you run Kimi Code against a specific model (provider type, base URL, API key, context size, capabilities, and thinking settings) without editing config.toml.

  • #221 bab2da7 - Install plugins directly from GitHub repository URLs, and surface each install's origin and trust level (kimi-official, curated, third-party) in the plugin manager.

  • #118 8913440 - Support querying sessions by sessionId or workDir in listSessions, and show a helpful cd command when resuming a session from a different working directory.

  • #186 537cf20 - Remove the default per-turn step limit of 1000. Users can still set max_steps_per_turn in config to enforce a custom limit.

Patch Changes

  • #197 f3269ea - Show the real terminal status of background agents in the transcript so lost, failed, and killed ones no longer appear as completed, and include the resume agent id and recovery instructions in the failure notification so the model can resume reliably.

  • #211 54590d3 - Back off failed compaction retries by a fixed slice of the model context window.

  • #167 b5981a5 - Introduce ModelProvider interface and SingleModelProvider to decouple Agent from ProviderManager.

  • #213 2388f20 - Handle context overflow errors consistently across provider responses.

  • #214 caaa6d8 - Fix the native self-updater reporting a successful update when the install command actually failed.

  • #202 14a0348 - Fix footer leaking onto the terminal when resuming a non-existent session.

  • #198 8c77cfa - Fix automatic ripgrep installation when temporary files are on another filesystem.

  • #199 588145d - Expand the footer's rotating tips to surface more commands and shortcuts, featuring newer and important ones more prominently.

  • #192 64964a0 - Improve the usage information display in the TUI.

  • #195 3a0e060 - Project persisted hook and blocked prompt messages into model context.

  • #221 bab2da7 - Restrict plugin trust badges to Kimi-hosted plugin CDN URL patterns.

  • #207 e280f33 - Recover from provider model token limit errors during long conversations.

  • #201 3da4dae - Automatically retry when a model response stream is dropped mid-flight (a terminated error) instead of failing the turn.

  • #190 1873859 - Slim the LLM diagnostic logs with fewer, more compact fields.

  • #185 114777e - Split RuntimeConfig into Kaos and ToolServices and update all references accordingly.

  • #189 564721f - Clarify subagent and background task stop messages as user-initiated.

  • #206 07d51e4 - Relocate shared tool service typing to the tool support layer.

  • #215 b9860e9 - Align the datasource plugin with the generic two-tool workflow.

  • #200 5159af3 - Keep blocked prompt hook conversations available to subsequent model turns.

0.5.0

Minor Changes

  • #163 07dd604 - Add /auto slash command and --auto CLI flag for auto permission mode.

  • #157 971fce6 - Add scheduled tasks:

    You can now ask the agent to remind you at a specific time, run a task on a recurring cron schedule (for example, check a deploy every 5 minutes or run a daily report every weekday at 9am), or come back on its own in a few minutes to continue what it was doing.

    Schedules use the standard 5-field cron syntax.

Patch Changes

  • #162 f3c1015 - Add a clickable changelog link to the update prompt.

  • #150 8b5a251 - Show the full Bash command when expanding a Bash tool card with ctrl+o. The header still truncates long commands at 60 chars, but the expanded view now reveals the complete multi-line command above the output.

  • #158 d1f9a83 - Shorten the session title written to the terminal window/tab from 80 to 32 characters so long first messages and pasted content no longer stretch the tab bar past readable width.

  • #146 76cbf86 - Cap the inline todo panel at five rows and show a +N more indicator so long task lists no longer fill the screen.

  • #120 8515472 - Fix compaction to handle edge cases where no messages are compactable and improve retry logic.

  • #159 c88b7bf - Fix official datasource tools to preserve complete responses and write returned result files.

  • #124 3e72f25 - Fix migration mapping the legacy default_yolo key to the dead yolo field instead of default_permission_mode.

  • #164 0a76658 - Clarify plugin manager keyboard shortcuts and show plugin state changes inline.

  • #142 dad2b87 - Refactor TUI code structure.

  • #166 92e1d8c - Report discovered plugin skills in plugin manager summaries.

  • #139 50251a1 - Show file content and diff in Write and Edit approval prompts, and open them in a dedicated full-screen viewer on ctrl+e instead of expanding inline.

  • #117 a6d379b - Offload large base64 media payloads from wire.jsonl into external blob files to reduce wire size and memory pressure during session replay. Includes an in-memory read-through cache on BlobStore so repeated rehydration avoids redundant disk reads.

  • #150 8b5a251 - Wrap long question, body, and option text in the AskUserQuestion dialog instead of truncating with an ellipsis. The question prompt, body description, option label, option description, and submit-tab review entries now flow onto multiple lines with a hanging indent.

0.4.0

Minor Changes

  • #116 2c7a8cc - Expand folded paste markers on second paste. When the cursor is on a paste marker (e.g. [paste [#1](https://github.com/MoonshotAI/kimi-code/issues/1) +15 lines]) and the user pastes again, the marker expands back to the original content instead of inserting new clipboard data.

  • #26 2b74025 - Rework tool permissions: reads outside cwd no longer prompt, session approvals match the exact call, and path-based rules are case-insensitive.

  • #119 ebf6e81 - Add user-global plugin installation, interactive plugin management, plugin-provided skills, and plugin-owned MCP servers.

  • #112 d03f6f4 - Add /export-debug-zip slash command to export the current session as a debug ZIP archive directly from the TUI.

  • #113 028d069 - Add /export-md slash command to export the current session as a Markdown file.

Patch Changes

  • #105 d599183 - Enhance kimi export to include more diagnostic information in the manifest.

  • #89 61cae59 - Prevent the TUI from crashing when pull request lookup fails during startup.

  • #97 2e8c417 - Fix thinking spinner leaking past turn end when an empty thinking delta creates an orphaned thinking component.

  • #103 73c4232 - Show the original session resume command after forking a session.

  • #88 ce420bf - Refactor TUI resume replay logic.

  • #119 ebf6e81 - Restrict plugin zip installs to manifests at the archive root or a single wrapper directory.

  • #102 6f55f1d - Route session-tagged log entries exclusively to the session sink instead of duplicating them to the global sink. Consistently omit stable main-agent context keys from all session log lines that carry agentId=main.

  • #92 4e458d6 - Use one retry classification for transient LLM failures across regular turns and compaction.

0.3.0

Minor Changes

  • #76 6f22ae4 - /logout now opens a picker so you can choose which provider to log out of, instead of always logging out the one tied to the current model. The current provider is highlighted by default, so pressing Enter matches the previous behavior. The command is also available as /disconnect.

Patch Changes

  • #62 e2b2b46 - Make AgentRecords hold the Agent instance directly and inline the restore dispatch logic.

  • #73 bddc60f - Prevent running the /model and /sessions slash commands while streaming or compacting context.

  • #70 d95b013 - Preserve catalog-declared interleaved reasoning fields for OpenAI-compatible models configured through /connect.

  • #78 61f7d0e - Make OpenAI-compatible reasoner models work out of the box for hand-written provider configs. The openai provider now auto-detects thinking on incoming responses by scanning the de facto field set (reasoning_content, reasoning_details, reasoning), serializes thinking back as reasoning_content by default, and auto-injects reasoning_effort whenever the conversation history contains prior thinking — so DeepSeek, Qwen, One API and other gateway-fronted services no longer require a hand-set reasoning_key. The reasoning_key model-alias field remains available as an explicit override for non-standard gateways.

  • #66 8ddfc04 - Fix API key input dialog showing a masked dot in empty state.

  • #72 0ce0072 - Fix user skills in ~/.agents/ not being loaded.

  • #86 5e354d0 - Restore real-time token display for running subagents in the TUI.

  • #57 8fb61f9 - Hide the todo panel on resume when all todos are already completed.

  • #83 7d9216d - Always emit a paired tool result when a tool returns a malformed or missing result, preventing the next request from failing with a missing tool_call_id error.

  • #81 1fbefc9 - Improve the Write tool UX.

  • #79 5a90b53 - Fix Plan mode session resets so new sessions no longer fail after plan review rejection and continue receiving events after setup errors.

  • #77 fe60c21 - Exit promptly when the controlling terminal goes away. The TUI now handles SIGHUP / SIGTERM and stdout/stderr EIO / EPIPE / ENOTCONN errors, preventing leftover kimi processes that pin a CPU core after the parent shell or multiplexer dies unexpectedly.

  • #85 2bb50a3 - Avoid overly small local completion caps that can truncate reasoning before summaries are produced.

0.2.0

Minor Changes

  • #30 a200a29 - Add a /connect command that configures a provider and model from a model catalog.

  • #30 a200a29 - The /connect provider and model pickers now support type-to-search filtering, and long lists are paginated. The /model picker is also paginated when many models are configured.

  • #25 c4dd1c7 - Flatten tool call data by inlining tool names and arguments at the top level, and limit legacy record migration so it only rewrites matching tool call payloads.

Patch Changes

  • #9 e503e69 - Add Ctrl-J as an additional shortcut for inserting new lines in the TUI prompt.

  • #22 2004aed - Add wire record migration handling during session replay.

  • #33 ab4bd09 - Report the macOS product version in OAuth device information instead of the Darwin kernel version.

  • #52 064343a - Correct the X-Msh-Platform header value to kimi_code_cli.

  • #38 e9e4a48 - Clarify the prompt-mode error when no model is configured by pointing users to the login flow.

  • #13 35726d7 - Hide the empty current session from the sessions picker while keeping other empty sessions visible.

  • #31 475ebad - Stop mentioning OAuth credentials in the migration UI — they are never migrated, so the previous "needs /login" notice misread as a failure. OAuth-only installs no longer trigger the migration screen.

  • #31 475ebad - Migrate user skills from ~/.kimi/skills/ to ~/.kimi-code/skills/ during the first-launch migration; existing target skills are kept.

  • #30 a200a29 - When no models are configured, /model and the welcome panel now point users to /login (for Kimi) and /connect (for other providers).

  • #11 15b018f - Surface API-provided error messages during feedback, usage, login, and model setup failures.

  • #24 7858821 - Persist model selections from the terminal UI to the default configuration, and honor the configured default thinking state for new sessions.

  • #14 0da6073 - Move wire metadata handling into the record layer and keep persistence backends limited to storage operations.

  • #12 89ea895 - Retry compaction responses that do not contain a summary before updating conversation history.

  • #29 df7a9ca - Avoid CPU spikes from large streamed tool arguments and coalesce high-frequency streaming UI updates.

  • #47 07ed2cf - Emit session resume hint as a structured meta message in stream-json output format.

  • #49 cf2227e - Resume sessions with a newer wire protocol version instead of failing. A warning is now shown in the TUI and records are replayed without migration.

  • #18 a964bd2 - Warn tmux users when extended key settings may prevent modified Enter shortcuts from working.

  • #17 bfbd522 - Let Kimi requests use the remaining context window for completion tokens by default while keeping explicit environment limits as hard caps.