Set Claude up for decomp work
Which model to use, how much effort to set, and which tools to install. Each choice comes with its reason, for both Max plans.
The short answer
Six lines cover most days.
- Lead with Opus 5.5. Claude Code starts on it.
- Give bulk work to Sonnet 5.5. That is many small units, each with a pass or fail check.
- Give the records to Haiku 5.5. Those are ledgers, notes and summaries.
- Save Fable 5.2 for the project plan and the few units nothing else can crack.
- Start effort at
medium. Usehighto study the game file, build the runtime, hunt bugs or work hard units. - Not sure? Use Opus 5.5 at
medium. Move up when Claude had the facts and still got it wrong. Move down when the work is routine.
The runtime is the code that stands in for the console.
Max 20x (now called Ultra)
Plan the project in one Fable 5.2 session. Lead with Opus 5.5. Run bulk workers on Sonnet 5.5. Send a unit to Fable 5.2 after three to five failed tries.
Max 5x (now called Max)
Plan and lead with Opus 5.5. Use Sonnet 5.5 for setup, bulk units and checking. Run fewer workers at once. Send only the last few failing units to Fable 5.2.
The models
Claude Code can run four current models. Each can hold a million tokens, which is roughly 555,000 words. What a session holds is called its context.
| Model | What Anthropic says it is for | Speed | Cost | Use it for in decomp work |
|---|---|---|---|---|
Claude Fable 5.2/model fable | The hardest thinking and very long jobs. Anthropic calls it its most able model. | Medium | Highest. On Max plans it uses your weekly limit faster, and it is capped at half of that limit. | Planning the whole project. The few functions and bugs that nothing else can crack. |
Claude Opus 5.5/model opus | Long coding jobs in a real project. This is the model Claude Code starts with. | Medium | About half the price of Fable. | Studying the game file, writing the runtime, finding bugs, and leading other sessions. |
Claude Sonnet 5.5/model sonnet | A mix of speed and skill for everyday coding. | Fast | About a quarter of the price of Fable. | The bulk work: many small units, each with a strict check. Also setup scripts. |
Claude Haiku 5.5/model haiku | Many small, quick jobs. | Fastest | Lowest by far. | Notes, ledgers and summaries. The plainest bulk units once your check is strict. |
Anthropic's own advice
Anthropic's model guide says: "If you're unsure which model to use, start with Claude Opus 5.5 for most workloads."
Its Claude Code blog names two signals. Go up a model when Claude had the facts, "clearly tried and still got it wrong". Go down "when the work is routine".
The blog also says the fix is often in your task or your CLAUDE.md, not in the model.
How to switch
/model sonnet claude --model sonnet
Type the first line inside a session. Use the second to start one.
/model saves your pick for new sessions too. Press s in the picker to switch for this session only.
Fable is never the default
Anthropic's docs say: "No Fable model is the account-type default on any plan or provider." Start that one session with claude --model fable. Then your saved default does not change.
Effort
Effort is the second dial. The model is who does the work. Effort is how much work it does.
Anthropic's blog says effort covers "the number of files read, tools used, and how many steps it takes". One blog example used "roughly 7x more tokens" at high effort than at low.
| Effort | What it does | When to use it here |
|---|---|---|
low | Quick answers. Claude checks less of its own work. | Almost never here. At low effort the models skip checks, and checks are the whole method. |
medium | The normal setting in Claude Code for every current model. | Work with a clear goal and a strict check: setup and bulk units. |
high | Claude tests more edge cases and checks more before it answers. | Studying the game file, runtime work, bug hunts, and hard units. |
xhigh | Deeper thinking. Uses many more tokens. | Only for a unit or bug that already failed at high. |
max | The most thinking. Anthropic warns it can overthink and gives small gains. | Not a habit. One stubborn problem at a time, and only after xhigh failed. |
How to set it
/effort high claude --effort high
These work like the model commands. /effort status prints the level in use.
To save a level for one model, put this in a settings file:
{"modelSettings": {"claude-opus-5-5": {"effortLevel": "high"}}}
The settings keys do not take max.
What the docs warn about
- Every current model starts at
mediumin Claude Code. - The same name is not the same amount. The docs say each model has its own scale.
lowskips checks. Atlow, Sonnet 5.5 "can skip verifying a change". Haiku 5.5 is "more likely to skip a search, stop early, or skip a check".maxcan overthink. The docs say it "may show diminishing returns and is prone to overthinking". That means more cost for little gain.- Above
high, Fable 5.2 gains are uneven. Anthropic says: "Most of the gain in capability is already present athigh".
The one keyword
ultrathink is the only thinking keyword. Put it in a prompt for deeper thinking on that one turn. "Think hard" is not a keyword. Claude Code treats it as plain text.
Which model and effort for each job
Guides on this site name a job, never a model. This table turns each job into a model and an effort.
| Job | What it is | Max 20x (now called Ultra) | Max 5x (now called Max) |
|---|---|---|---|
Plan the projectscope | Pick the approach. Study what already exists. Write the plan and the Scope Contract. | Fable 5.2 effort highOne session. This choice shapes months of work. | Opus 5.5 effort highUse Fable 5.2 for this one session if you have weekly room. |
Set up the projectsetup | Install tools. Write the build script and the check script. Lay out the folders. | Opus 5.5 effort medium | Sonnet 5.5 effort medium |
Study the game fileanalyze | Map the code. Find library code. Name functions. Work out data layouts. | Opus 5.5 effort high | Opus 5.5 effort mediumRaise to high for function edges and data layouts. A mistake there spreads. |
Bulk unitsbulk | Many small, similar units. Each has its own pass or fail check. Runs in parallel. | Sonnet 5.5 effort mediumHaiku 5.5 for the plainest units. | Sonnet 5.5 effort mediumFewer workers at once. Haiku 5.5 for the plainest units. |
Hard unitshard | The units that bulk workers could not finish in three to five tries. | Fable 5.2 effort highGo to xhigh only after a failed try at high. | Opus 5.5 effort highSend only the last few that still fail to Fable 5.2. |
Build the runtimeruntime | Write the stand-in for the console: graphics, sound, input, files. | Opus 5.5 effort high | Opus 5.5 effort mediumRaise to high for timing and graphics bugs. |
Find a bugdebug | Find why it crashes or draws wrong. Use logs and traces. Prove the cause before any fix. | Opus 5.5 effort highAfter two failed tries with full evidence, move to Fable 5.2. | Opus 5.5 effort highOne bug at a time. |
Check the workverify | A fresh session re-runs the check and reads the changes. It hunts for cheating. | Opus 5.5 effort mediumAlways a new session, never the one that did the work. | Sonnet 5.5 effort highAlways a new session, never the one that did the work. |
Keep the recordsdocs | Update the ledgers, notes and summaries. | Haiku 5.5 effort medium | Haiku 5.5 effort medium |
Use the same pairing for the same job every time.
A strict check makes a cheaper model good enough
Maurice Heumann ran up to 16 agents on one PC game. Before he had a pass or fail check, cheap models "produced extremely bad results". With a byte check on every function, they had "enough feedback to produce incredible results".
He ended with 14 agents on a cheap model and 2 on Opus 5.5. So bulk units go to Sonnet 5.5.
Most wins come in the first few tries
Macabeus tested 60 functions from two decomp projects. Sonnet 4.6 matched 74% within 12 tries. He found that "nearly half of the matches happened on the first attempt".
After three failed tries, the chance of a match fell to about one in four. So a bulk worker stops after three to five tries.
A stronger model costs more for each finished function
Fable 5 matched 5 of those functions that Sonnet failed every time. It was also "3.5-4.6x more expensive than Sonnet in this case". Macabeus advised keeping it "as a last resort for the genuinely difficult work".
Mistakes in study and planning spread
A function cut at the wrong place cannot be matched honestly. So the study job stays on Opus 5.5.
The plan shapes months of work. Anthropic's docs say Fable suits "tasks larger than a single sitting". So Max 20x gives the plan one Fable 5.2 session.
The checker must be a fresh session
The docs say a fresh reviewer helps "because it hasn't seen your reasoning". But it must run the check. Heumann's first month had a reviewer agent and no machine check. He threw that code away.
What these numbers cannot tell you
The tests used older models: Sonnet 4.6 and Fable 5. We found no public test of Sonnet 5.5 or Fable 5.2 on decomp work. Treat the pattern as a guide, not the numbers.
Some units will need a person. In one finished N64 project, about 4.8% of matching commits needed an expert.
Your plan
Anthropic renamed both plans. Max 5x is now Max. Max 20x is now Ultra.
| What you get | Max 20x | Max 5x |
|---|---|---|
| Price each month | $200 | $100 |
| Weekly limit | 10 times the Pro plan | 5 times the Pro plan |
| Five-hour limit | None on verified accounts | Yes, 5 times the Pro plan |
| Opus, Sonnet and Haiku | Included | Included |
| Fable | Included, up to half the weekly limit | Included, up to half the weekly limit |
Fable draws from the same weekly limit and uses it up faster. At half the weekly limit, Fable stops. Then you switch model or pay with usage credits. The limits are shared with the Claude apps.
No one publishes the real numbers
Anthropic gives no token or message counts. Its pricing page says there is "no fixed message count". The old name said 20x, but the pricing page says 10 times Pro each week. No page we read explains that.
What people report about running out
- Chris Lewis, on an N64 game: "An unattended Opus task could burn through the Claude 20x Max plan in a matter of days". He moved cleanup and docs to a cheaper model.
- Matthew Stanley, on a PS1 recompiler: "I regularly hit usage limits on Claude's $100/month plan".
Habits for each plan
Max 20x
- Start with one lead and three or four bulk workers.
- Use Fable 5.2 for the plan and the hard queue.
- Overnight, run bulk units on Sonnet 5.5 with a strict check.
- Do not leave Opus 5.5 or Fable 5.2 running alone all night.
Max 5x
- Start with one lead and one or two bulk workers.
- Use Fable 5.2 only for the last few failing units.
- Overnight, run one bulk worker on a short list of units.
- You also have a five-hour limit. Plan your day in blocks.
These worker counts are starting points, not published numbers. Lewis ran agents in three, then four, copies of his repo. Max 5x has half the weekly room. Each platform guide gives its own counts.
Watch your usage
/usageshows your plan usage bars./rate-limit-optionsshows your choices at a limit.- At a limit you can wait, upgrade, or turn on usage credits. Credits cost real money at API rates.
- If the Fable row in
/modelsays "Requires usage credits", Fable costs extra. Aclaude -prun then bills it without asking. - If
ANTHROPIC_API_KEYis set, Claude Code bills that key and not your plan.
What to install first
Install these six things on your Windows 11 PC before you open a platform guide.
| Install | Why you need it | What to know |
|---|---|---|
| Claude Code | The agent you direct. | Run claude --version. Fable 5.2 needs v2.1.321 or later. This page was checked on v2.1.325. |
| Git | It saves every step and makes worktrees. | Claude Code on Windows uses Git Bash for hook commands and for its Monitor tool. |
| Python | Many decomp tools are Python scripts. | splat, m2c and asm-differ are three of them. For the version, see your system's guide. |
| WSL | Many N64 projects are built for Linux first. | You have it already. One GameCube project built on dtk-template says native Windows tools are best. See your system's guide. |
| A C and C++ build chain | Recompilers and runtimes are C or C++ projects. | Most recompilers we read about build with CMake. The compiler differs by tool. See your system's guide. |
| Ghidra | It lists the functions in a game file and decompiles them. | One PS1 author found that Claude without Ghidra "required constant redirection". |
Should Claude Code run in Windows or in WSL? Run it where the project's tools run. Your system's guide says which.
Our research did not test these install steps. Follow each tool's own page. The tools for each system are on Tools and in the platform guides.
The project files to make on day one
State lives in files, not in the chat. A new session should be able to pick up from these files alone.
| File | What it holds | Who changes it |
|---|---|---|
CLAUDE.md | Short standing rules and the check command. | You, when Claude makes the same mistake twice. |
SCOPE.md | The goal, the game version, the milestone and what is out of scope. See the Scope Contract. | Only you. |
PROGRESS.md | What is done, what is next, and dead ends. | Claude, at the end of each session. |
| A function ledger | One row for each function, with its size and a status. | Claude, after a check passes. |
notes/parking-lot.md | Side ideas and bugs that are not part of the task. | Claude adds lines. You decide what happens. |
Where CLAUDE.md is read from
Claude Code loads CLAUDE.md when a session starts. It looks in three places you will use:
./CLAUDE.mdin the project folder. Write this one first.~/.claude/CLAUDE.mdfor rules you want in every project../CLAUDE.local.mdfor private notes in this project.
Claude Code joins all the files it finds. After /compact, it reads the project file from disk again.
Why short beats long
The docs say to "target under 200 lines". Longer files "consume more context and reduce adherence". Adherence means how well Claude follows the rules.
Write only what Claude cannot find by reading the repo. The docs call the check command "the single most useful line".
CLAUDE.md is advice, not a lock. The docs call it "context, not enforced configuration". If Claude keeps missing a line, move it into a hook or a deny rule.
# Rules for this project @SCOPE.md `SCOPE.md` holds the goal, the game version and the milestone. Only the owner changes it. If a task needs a change to it, stop and ask. ## The check - Build: `<build command>` - Check: `<check command>` - A task is done only when the check passes. Paste the check output as proof. - A clean build alone is not proof. ## Every task - Work on one task card. Edit only the paths its FENCE line names. - Start each report with DONE, PARTIAL or BLOCKED. - If you are blocked, stop. Say what blocked you and what you tried. Do not work around it. - Put side ideas and other bugs in `notes/parking-lot.md`. Do not act on them. - Ask before you add a tool, a refactor or a feature the task card does not name. ## Files that are proof - Do not edit: `<original assembly>`, `<expected hashes>`, `<check script>`, `<generated code>`. - Why: these files prove the work is right. A change to them makes every result worthless. - To change generated code, change the generator and run it again. - Game files stay outside the repo. Do not copy them in. ## State lives in files - `PROGRESS.md`: what is done, what is next, and dead ends. - `<function ledger>`: one row per function, with a status column. - Update both before you end a session. # Compact instructions Keep the task card, the last check output and the list of changed files.
Before you use it: swap each part in angle brackets for your own command or path. The @SCOPE.md line pulls that file into every session.
Skills, subagents, hooks and MCP servers
Claude Code has four add-ons. Add each one when you need it, not on day one.
Anthropic's rule of thumb
A rule Claude got wrong twice goes in CLAUDE.md. A procedure you repeat becomes a skill. A thing that must happen every time becomes a hook. A noisy side task goes to a subagent.
Skills
A skill is a folder with a SKILL.md file of steps. Claude loads the steps only when it uses the skill. Use one for a procedure you repeat, like the loop for one function.
Read any skill from someone else before you add it. The ones we reviewed are on Tools: skills.
Subagents
A subagent is a helper with its own context. It does a side task and sends back a summary. Use one to read a big listing, or to check work with fresh eyes.
It does not see your chat. The docs say you get "a fresh pair of eyes out of it, but not a smarter answer".
Hooks
A hook is a command Claude Code runs by itself at a set moment. A PreToolUse hook can block a tool call. Use hooks to guard the proof. One N64 project blocks edits to its hash file and assembly this way.
Hooks are not airtight. That project's author saw Claude write a script to change a guarded file.
MCP servers
An MCP server plugs an outside tool into Claude. Ghidra and the debugger in an emulator are two. Several strong projects used plain scripts and no MCP. Anthropic's docs say to prefer command-line tools when they exist.
Where each one lives
| Add-on | Where it lives, or the command that adds it |
|---|---|
| Skill | .claude/skills/<skill-name>/SKILL.md for this project. ~/.claude/skills/<skill-name>/SKILL.md for all projects. Run it with /skill-name. |
| Subagent | A Markdown file in .claude/agents/ or ~/.claude/agents/. It needs a name and a description. Add model: haiku to keep it cheap. |
| Hook | The hooks key in .claude/settings.json. A hook that exits with code 2 blocks the action. /hooks lists them. |
| MCP server | claude mcp add [options] <name> -- <command> [args...]. Add --scope project to save it in .mcp.json. /mcp shows your servers. |
Permissions
A permission mode sets what Claude may do without asking you. Deny rules set what it may never do.
| Mode | What runs without asking |
|---|---|
default (shown as Manual) | Only reads. |
acceptEdits | Reads, file edits and common file commands in the project folder. |
plan | Reads. No source edits until you approve the plan. |
auto | Everything, with safety checks in the background. |
dontAsk | Reads and tools you approved before. All else is refused. |
bypassPermissions | Everything. The docs say: "Isolated containers and VMs only". |
A terminal session starts in auto mode, from v2.1.283 on. A second model reviews each action first. The docs say it "does not guarantee safety". Press Shift+Tab to change mode.
Use plan mode for big work. Start it with /plan or claude --permission-mode plan. Do not use bypassPermissions on your own PC. In Heumann's project, agents "periodically wiped the VM because of malformed commands".
Deny rules for files Claude must never edit
Put deny rules in .claude/settings.json in your project. The docs say they "hold in every permission mode". Claude Code enforces them, not the model.
{
"permissions": {
"deny": [
"Edit(./asm/**/*)",
"Edit(./expected/**/*)",
"Edit(./generated/**/*)",
"Edit(./tools/check.sh)",
"Read(./**/build/**/*)"
]
}
}
Change the paths to match your project. The Edit lines guard the assembly, the expected hashes, machine-made code and the check script. The Read line keeps build output out of the context.
We did not run this example, so test it. Ask Claude to edit a guarded file and see it refused. /permissions lists your rules.
A deny rule is not a wall
Claude can still reach a file through a shell command. The docs say a Bash rule "isn't a security boundary around the program". Add a PreToolUse hook, and have the fresh checker read the changes.
The sandbox is not on plain Windows
Claude Code has a Bash sandbox that limits what shell commands can reach. The docs say: "On native Windows, Claude Code runs commands unsandboxed". To use it, run Claude Code inside WSL 2 and type /sandbox.
Running sessions side by side
Bulk work goes faster with several workers. Each worker needs its own copy of the files and one small task.
Worktrees
A worktree is a second copy of your repo on its own branch. Two sessions in two worktrees cannot write over each other.
claude -w unit-a claude --worktree unit-b
Each command makes a folder under .claude/worktrees/ and starts Claude there. A new worktree has no ignored files, so a build may miss your game files. List small files in .worktreeinclude to copy them in.
After a merge, run the full check again. One project's notes say: "A match proven in an isolated worktree is not a match on the merged branch."
Background and unattended runs
| What you want | The command, and what to know |
|---|---|
| A background session | claude --bg starts one. Put your prompt after it in quotes. claude agents shows them all. This view is a research preview. |
| A one-shot run | claude -p runs one prompt and exits. Put your prompt after it in quotes. It suits one unit for each run. It starts in Manual mode. |
| Tool limits | --allowedTools names the tools a claude -p run may use. Add --permission-mode dontAsk so all else is refused. |
| A cap on turns | --max-turns caps a run. It is in the docs but not in claude --help on v2.1.325. We did not run it. |
Skip --bare on a Max plan. It needs ANTHROPIC_API_KEY, which bills the API. Start small, as the docs say: "Try it on three files first".
Subagents and workflows
One session can run 20 subagents at once by default. A dynamic workflow is a script Claude writes to run dozens of them. Say "use a workflow" to start one. Claude Code warns above 25 agents or a projected 1.5 million tokens.
The docs say to "run the workflow on a small slice first".
What it costs
The docs say: "Running several sessions or subagents at once multiplies token usage". Each subagent and background session spends from your plan limits.
Max 20x
Three or four worktrees to start. Try a workflow on five units before you give it fifty.
Max 5x
One or two worktrees to start. Keep workflows small, or skip them.
Keep the context small
The context is all the text Claude holds in a session. Every request sends the whole of it again.
A million tokens is not a reason to fill it. The docs say "you can still pay for context you don't need".
- One task for each session.
/clearbetween tasks. It starts a new chat with empty context. The docs say: "It costs nothing"./contextshows what is filling the context./compactswaps the history for a summary. On a long session it "is itself a big request". Anthropic suggests a brand new session instead.- Give paths, not pastes. Lewis put it this way: "don't provide unasked-for context".
- After two failed corrections, run
/clearand write a better prompt.
Long runs drift. Heumann's team made compaction start at 42% full instead of 90%. In Claude Code, /autocompact 500k makes it start sooner.
A rule you only said in chat can vanish at compaction. Put lasting rules in CLAUDE.md.
When Claude says no or switches models
Two things can stop a session you did not plan for.
1. The rule about recreating a game
Game Developer reported on 2026-10-30 that a rule was added to Claude Code's prompt on 2026-10-27. The rule reads: "Do not build a recreation of a specific existing game, even if it is renamed or called original."
Addy Osmani of Anthropic said it was added "to steer it away from recreating someone else's specific game".
- The report does not mention decompiling or recompiling.
- No source we found says how the rule applies to decomp work.
- So Claude may refuse a decomp task. We cannot tell you when.
This site offers no way around it
If Claude says no, treat it as a BLOCKED report. Write down what you asked and what Claude said. Do not reword the task to slip past the rule. That task may not be possible with Claude Code.
2. Claude may switch to an older model
Fable 5.2, Opus 5.5 and Sonnet 5.5 run with safety checks. The docs say these "most often flag cybersecurity and biology content". A flagged request runs again on an older model, and the session stays there.
- From Fable 5.2 or Opus 5.5, a security flag moves you to Opus 4.8.
- It can happen on the first request, since that carries your
CLAUDE.mdand git status. - The docs say this is expected, "not an account flag".
How to notice. Run /model to see which model is picked. Run /effort status to see the effort.
How to switch back. The docs say: "To return to your original model, run /model."
How to be asked first. Put "switchModelsOnFlag": false in your settings, or use /config. Claude then asks each time. A flagged subagent cannot ask, so it fails.
Not tested on decomp projects
Our research did not test whether a game decomp repo sets off these checks. The docs do say that harmless security work can set them off.
How this page was checked
Every Claude fact here was read on 2026-11-13. Nothing comes from memory.
From Anthropic's own pages: models, effort levels, plan limits, commands, settings and safety checks.
Confirmed by running Claude Code 2.1.325 on Windows 11, with read-only commands:
claude --versionprinted2.1.325 (Claude Code).claude --helplists--model,--effort,--permission-mode,-p,-w,--bg,--allowedToolsand--bare.claude mcp add --helplists--scopeand--transport.
Could not be verified
- How well Claude does at decomp work. No Anthropic page says.
- Real usage numbers. Anthropic only compares each plan to Pro.
- Why "Max 20x" became 10 times Pro.
- The terms of the Fable 5.2 launch offer.
- Speed in tokens per second.
--max-turns. It is in the docs but not inclaude --help.- Anything typed inside a session. Slash commands, hooks, auto mode and subagent limits come from the docs only.
- The deny rule example. It follows the docs but was not run. An
Editrule may not cover theWritetool. - Model switching on decomp repos.
- The game rule. It rests on one news report.
- Worker counts. They are starting points, not measured limits.
- Freshness. Fable 5.2 came out four days before this check.
Sources
- Anthropic: models overview
- Claude Code: model and effort settings
- Anthropic: effort
- Anthropic blog: model and effort level in Claude Code
- Anthropic: prompting Sonnet 5.5
- Anthropic: prompting best practices
- Claude Code: best practices
- Claude Code: features overview
- Claude Code: CLAUDE.md and memory
- Claude Code: skills
- Claude Code: subagents
- Claude Code: hooks
- Claude Code: MCP
- Claude Code: permission modes
- Claude Code: permission rules
- Claude Code: sandboxing
- Claude Code: large codebases
- Claude Code: worktrees
- Claude Code: running tasks in parallel
- Claude Code: background sessions
- Claude Code: non-interactive mode
- Claude Code: dynamic workflows
- Claude Code: tools reference
- Claude Code: context window
- Claude Code: commands
- Claude Code: CLI reference
- Claude Code: settings reference
- Claude Code: features by plan
- Anthropic: pricing and plans
- Anthropic support: what is the Ultra plan
- Anthropic support: Claude Code with your plan
- Anthropic support: Fable models on your plan
- Anthropic support: why Claude switched models
- Anthropic: prompting Fable 5.2
- Game Developer: report on the game recreation rule
- Maurice Heumann: agents decompile a first-person shooter
- Macabeus: 60 functions tested
- Macabeus: Fable 5 on the same functions
- Macabeus: starting a decomp project from zero
- Chris Lewis: the long tail of decompilation
- Chris Lewis: an N64 game in 84 days
- Chris Lewis: coding agents on N64 games
- Snowboard Kids 2 decomp: the guard hooks
- asmlift: notes on worktree merges
- Matthew Stanley: a PS1 recompiler with Claude Code
- Ocarina of Time decomp: build notes
- Star Fox Adventures decomp: Windows notes
- GhidraMCP