MiniMax Code
September 21, 2026 · View on GitHub
All four files here are OrcaReplay captures,
taken 2026-09-20 from mcode 0.4.12.
MiniMax Code ships three system prompts and picks one per surface, so all three are here:
--prompt-mode | file | chars |
|---|---|---|
tui (default) | prompt | 14,675 |
coding | prompt | 16,055 |
work | prompt | 17,619 |
They are three documents, not one with a flag in it: coding swaps the Deliverable Files section
for Media Output, and work adds an Artifact Completion Contract on top of that. All three
declare the same 18 tools — the three captures came out byte-identical,
so they share the one file.
The model is not the variable
Seven models across six labs — MiniMax, DeepSeek, OpenAI, Kimi, GLM, Hunyuan — on two different
gateways produced 119 identical lines each. The only difference was one line, - Model: <id>,
and the tool set never moved. The prompts are Handlebars templates shipped inside the package
(assets/agents/_v2/*/SYSTEM.md.hbs), not fetched from a server, and none of their conditionals
branches on a model or a provider. The model in these filenames is the one that answered, not a
variant.
What is missing from these, and why
These are the BYOK shape. The code that answers a bring-your-own-key run forces disableMemory and
disableMavis, which drops a 3,381-character # Memory section and a 210-character block that a
signed-in run carries. Setting memory.enabled: true in the config does not bring it back —
measured, byte-identical output. Capturing the fuller prompt needs a MiniMax credential, and this
capture deliberately used none.
Regenerate
One line per prompt mode, against @minimax-ai/code 0.4.12:
node capture/capture.mjs mcode --model deepseek/deepseek-v4-flash-free --prompt-mode tui --allow-failed
node capture/capture.mjs mcode --model deepseek/deepseek-v4-flash-free --prompt-mode coding --allow-failed
node capture/capture.mjs mcode --model deepseek/deepseek-v4-flash-free --prompt-mode work --allow-failed
Two flags earn their place. --prompt-mode picks between three different prompts the one binary
sends, and --allow-failed keeps the capture when the turn comes back 401 — which it will,
because the key orca writes into the generated config is a placeholder and the prompt is captured
regardless, travelling in the request.
Run it from a directory that is a git repository and has no MCP config. The first matters because
the harness is told whether it is in one, and these captures say it is; the second because orca
rewrites an MCP config it finds so that traffic is captured too, which adds those servers' tools to
the harness's tool list. Capturing from orca's own repository put six mcp__orcareplay__* entries
into the tool set — 24 instead of 18 — while leaving the prompt itself byte-identical, since MCode
does not enumerate its tools there.
The route behind the one-liner, which is worth knowing before trying the obvious one:
- Interception does not work here. MCode's HTTP client is Node's
fetch, which consults neitherHTTP_PROXYnorHTTPS_PROXY, so--tls-interceptrecords nothing and reportscapture.empty. - The provider's base URL lives in
~/.minimax/config.yaml, not in an environment variable. Themcodeadapter pointsMINIMAX_DATA_DIRat a directory inside the run and writes a redirected copy of that config there, rather than editing the operator's file and putting it back — MCode rewrites its own config on startup, and a run that is killed never restores anything. provider add --usecannot activate a provider headlessly — that path throwsTEST_REQUIREDunconditionally.defaultModelset to<providerId>/<modelId>activates it instead, where the provider id starts withcustom_provider:.- No account and no key are needed, and only a custom provider can be captured at all: MCode restores the built-in providers' origins over whatever the config says.
Details in docs/CAPTURES.md.