Kimi CLI and K3: The Newest Harness Has the Strangest Ideas
Moonshot released K3 with a recommendation most model cards do not carry: use our harness. Kimi Code CLI is a ground-up TypeScript rewrite of the Python kimi-cli, MIT licensed, shipped as a single binary, and it makes design choices nobody else has tried. Some are odd. At least three are ideas the bigger harnesses will copy.
Preserved thinking is not optional
K3 is a thinking-always model, and the platform docs are blunt: the complete assistant message must be passed back into history as-is, including reasoning_content and tool_calls, because the model was trained in preserved-thinking mode. This is the same lesson OpenAI's ARC-AGI-3 post taught from the other direction: discard reasoning between steps and the model interprets the world from scratch every action. Kimi makes retention a protocol requirement rather than a setting you can forget.
Do not send the tool inventory
Moonshot's tool-calling guidance for K3 inverts the common pattern: declare a small core set plus a search_tools retrieval function, force retrieval on the first turn with tool_choice: "required", then inject definitions on demand through a system message that carries a tools field, a Moonshot API extension. Decide reasoning_effort (low, high, max; default max) before the session starts, because changing it breaks the prefix cache. It is the additive tool loading idea again, arrived at independently, specified at the API level.
The strange ideas
- The harness is also your shell. Ctrl-X flips the TUI into a mode where you run commands directly, and a zsh plugin embeds the agent into your own shell going the other way. No other mainstream harness treats the shell boundary as bidirectional.
- Checkpoint time travel. The Python CLI checkpoints context every step, and a tool lets the model send a message back to an earlier checkpoint and rewind to it. Session archaeology as a first-class loop mechanism, named, with complete sincerity, after the time-travel plot device in Steins;Gate.
- Swarms with a queue. Kimi Code's AgentSwarm fans one templated prompt across up to 128 subagents with queued launches and resumable failures, and a tool scheduler that overlaps only tool calls whose resource accesses do not conflict.
- Ecumenical by default. It reads AGENTS.md natively and also ingests skills from
.claude/skillsand.codex/skills. The newest harness assumes you already live in the others.
The two honest data points
Axes are zoomed; the gaps are small, and that they exist at all is the point. Both numbers are Moonshot's own, published against their own interest.
The K3 model card contains two numbers rival cards would have buried. First, on BrowseComp their harness scored 91.2 with compaction triggered at 300K tokens versus 90.4 using the raw million-token window: context management beat raw context, from the vendor selling the million-token window. Second, on Moonshot's own coding benchmark, K3 scores 72.9 inside Kimi Code and 73.7 inside Claude Code. They published a number showing a rival's harness runs their model better. Both facts point the same direction: the harness is not packaging around the model; it is part of the system being measured.
Caveats where they belong: kimi-code is at v0.31, weeks old, and moving fast; K3's weights are under a bespoke license (MIT-style with revenue and attribution conditions), not plain MIT like the CLI. Sources: the kimi-code and kimi-cli repos, the K3 model card, and Moonshot's tool-calling guidance.