Kimi K3.1 Pro vs Claude Opus 5.5 for coding agents
The same coding agent on six tasks with hidden tests, twice per model. Kimi K3.1 Pro and Claude Opus 5.5 passed every test; Kimi took 5 times as long and cost 2.3 times as much per task.
Kimi K3.1 Pro is Moonshot's flagship model, and the usual comparison for it is Claude Opus 5.5. Most of those comparisons quote benchmark scores. We wanted to know what happens when you put both into the same coding agent and give them the same tasks: do they finish, how long do they take, and what does a task cost?
On QuickSilver Pro, Kimi K3.1 Pro costs $2.00 / $10.00 per million tokens and Claude Opus 5.5 costs $1.00 / $5.00. Here Kimi is the more expensive of the two per token.
Short answer, from 24 runs:
- Quality: a tie. Both models passed every hidden test in every run.
- Time: 409 seconds per task on average for Kimi K3.1 Pro, against 82 for Opus 5.5. Kimi took 4 to 6.6 times as long on every task.
- Cost: $0.221 per task for Kimi, against $0.094 for Opus, about 2.3 times as much.
- Why: Kimi reasons before it acts. It wrote 12,800 output tokens per task, 64% of them reasoning, and made twice as many requests. Opus reported no reasoning tokens.
- Kimi K3.1 Pro Highspeed, the same model on a faster endpoint, took 166 seconds per task, twice as long as Opus instead of five times, but cost $0.328.
How we tested
- Agent: OpenCode 1.19.4, non-interactive (
opencode run --auto), with QuickSilver Pro added as an OpenAI-compatible provider. The only thing that changed between runs was-m quicksilverpro/kimi-k3.1-proor-m quicksilverpro/claude-opus-5-5. - Agent settings: a clean OpenCode config with no MCP servers, plugins or extra skills, and OpenCode's defaults otherwise. OpenCode sent no reasoning-effort setting, so each model ran at its default. OpenCode chooses its system prompt and tools by model family, and we left that as shipped.
- Tasks: the six tasks from our Gemini 4 Argon vs Claude Opus 5.5 test, where they are described in full. Each is a throwaway Python repository with a one-paragraph prompt, a spec or bug report, one visible test, and a separate hidden test suite that we ran after the agent finished:
- Two-file bug fix in a shop module. 18 hidden tests.
- A duration parser implemented from a page of rules. 84 hidden tests.
- A refactor that must not change behaviour. 317 hidden tests.
- Sign-up validation with interacting rules. 84 hidden tests.
- A config-format parser with references and cycle detection. 57 hidden tests.
- A Mustache template renderer, graded against the official Mustache spec suite. 136 hidden tests.
- Runs: each task twice per model, 24 runs in total. Opus 5.5 ran on 2026-10-27 and Kimi K3.1 Pro on 2026-11-02, with the same tasks, agent version, config and grading script. The two models did not run side by side.
- Cost: the per-request cost that QuickSilver Pro returned in each response's usage block, summed over every request in a run. Neither model's price changed between the two test days and today.
Results
Averages over two runs per model and task.
| Task | Kimi K3.1 Pro: time | Kimi K3.1 Pro: cost | Opus 5.5: time | Opus 5.5: cost | Kimi takes |
|---|---|---|---|---|---|
| 1. Two-file bug fix | 226 s | $0.143 | 34 s | $0.049 | 6.6x as long |
| 2. Duration parser | 284 s | $0.149 | 53 s | $0.063 | 5.4x |
| 3. Refactor | 365 s | $0.194 | 85 s | $0.091 | 4.3x |
| 4. Sign-up validation | 263 s | $0.134 | 65 s | $0.075 | 4.0x |
| 5. Config parser | 559 s | $0.268 | 116 s | $0.132 | 4.8x |
| 6. Mustache renderer | 754 s | $0.440 | 139 s | $0.155 | 5.4x |
| Average | 409 s | $0.221 | 82 s | $0.094 | 5.0x |
Both models passed all 1,392 hidden tests across their 12 runs. All twelve runs together took 82 minutes on Kimi K3.1 Pro and 16 minutes on Opus 5.5.
Where the tokens and the money went, averaged over all 12 runs per model:
| Per run | Kimi K3.1 Pro | Opus 5.5 |
|---|---|---|
| Requests (including one short title request from OpenCode) | 15.8 | 7.9 |
| Input tokens | 251,000 | 107,000 |
| ...of which read from the prompt cache | 227,000 (90%) | 54,000 (51%) |
| Output tokens | 12,800 | 7,800 |
| ...of which reasoning | 8,100 | 0 |
| Cost of uncached input | $0.048 | $0.052 |
| Cost of cached input | $0.045 | $0.003 |
| Cost of output | $0.128 | $0.039 |
| Total cost per task | $0.221 | $0.094 |
What the numbers say
The output decides the bill. Kimi's prompt caching worked well: 90% of its input came from the cache, and its uncached input cost about the same as Opus's. But it wrote 1.6 times as many output tokens, at twice the output price, so its output alone cost more than an entire Opus run. Most of those tokens were reasoning that never reaches your code.
Kimi takes more steps. It made 15.8 requests per task against 7.9, and each step started with a round of reasoning. That is where the time goes: five times as long on average, and at least four times as long on every task.
One run inflated the Mustache numbers. In one of its two Mustache runs, Kimi K3.1 Pro started a sub-agent and made 41 requests. That run took 18 minutes and cost $0.65. Leave it out and Kimi averaged 348 seconds and $0.182 over its other 11 runs: still 4.3 times as long as Opus and 1.9 times the cost. All four Mustache runs downloaded the official spec tests and ran them before finishing. Our hidden tests for that task are the same files, so neither model's Mustache score is independent.
Opus worked without extended thinking. OpenCode does not send a reasoning parameter to a custom OpenAI-compatible provider, and Opus reported zero reasoning tokens. Kimi reasons by default. So this compares each model as the agent runs it out of the box, not each model at its strongest setting.
Which one to use
On these tasks, use Opus 5.5 for a coding agent. It solved the same tasks in a fifth of the time, for less than half the cost.
Kimi K3.1 Pro solved every task too, so it works as an agent model. It makes sense when you want a model from outside Anthropic in the loop, for example a second model from a different lab to check a change. If you use it interactively, try Kimi K3.1 Pro Highspeed: on the same tasks it took 166 seconds per task, two times as long as Opus instead of five, at $0.328 per task. For background jobs where nobody waits, the standard version costs less.
We did not find a task in this set that either model failed, so this test cannot tell you which one solves more on harder work.
Limits of this test
- Six tasks, two runs per model. Small, self-contained Python tasks of half a minute to 18 minutes each, not a multi-hour change in a large codebase.
- The two models ran on different days, so they did not see the same network and server conditions. Times include network time from our client to QuickSilver Pro and on to the provider; two runs of the same task differed by up to 2.5 times on Kimi.
- One agent, OpenCode, with its default system prompts per model family. Another agent, or a reasoning-effort setting, would change both speed and cost. We did not limit Kimi's reasoning or turn on Opus's.
- We wrote five of the six hidden test suites, so they reflect our reading of each spec. We checked each against a reference solution before running the agents.
- On every Opus request the prompt cache covered the same 8,028 tokens, about the size of OpenCode's system prompt and tool definitions, and the rest of the conversation was billed at the full input rate. With fuller caching Opus would cost less, not more.
Run it yourself
The OpenCode config we used, pointed at the public endpoint. Save it as opencode.json in your project:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"quicksilverpro": {
"npm": "@ai-sdk/openai-compatible",
"name": "QuickSilver Pro",
"options": {
"baseURL": "https://api.quicksilverpro.io/v1",
"apiKey": "{env:QSP_API_KEY}"
},
"models": {
"kimi-k3.1-pro": { "name": "Kimi K3.1 Pro", "limit": { "context": 1000000, "output": 64000 } },
"claude-opus-5-5": { "name": "Claude Opus 5.5", "limit": { "context": 1000000, "output": 64000 } }
}
}
}
}
Then run the same prompt with each model:
export QSP_API_KEY=YOUR_QSP_KEY
opencode run --auto -m quicksilverpro/kimi-k3.1-pro "Fix the failing test in tests/"
opencode run --auto -m quicksilverpro/claude-opus-5-5 "Fix the failing test in tests/"
--auto approves the agent's file edits and shell commands without asking, so use it only in a project you can reset. OpenCode shows a cost of 0 for a custom provider. The real cost of each request, with its model and token counts, is in your QuickSilver Pro dashboard. For the OpenCode setup, see Use QuickSilver Pro in OpenCode and Crush. For other models on the same tasks, see Claude Opus 5.5 vs GPT-6.1 Sol and Kimi K3.1 Pro Highspeed vs Pro.