tweakcc patches Claude Code in place: system prompts, toolsets and UI, with a restore path
Customize Claude Code's system prompts, create custom toolsets, input pattern highlighters, themes/thinking verbs/spinners, customize input box & user message styling, support AGENTS.md, unlock private/unreleased features, and much more. Supports both native/npm installs on all platforms.
At a glance
- What is it?
- tweakcc is an MIT-licensed TypeScript CLI that rewrites the Claude Code installation already on your machine, covering both npm and native Bun-binary installs. The interesting part is not the theme picker, it is the patch-and-repack mechanism and the question of what happens when Claude Code ships a new version.
- Who is it for?
- Adopt tweakcc if you already run Claude Code daily, you have opinions about its system prompts or UI, and you are comfortable re-running a patch step after each Claude Code upgrade. Do not adopt it on a shared or managed machine where a modified agent binary has to pass someone else's audit, and do not adopt it expecting the unreleased-feature patches to survive indefinitely.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What tweakcc actually changes, and who it is for
Claude Code ships as a compiled artifact: either an npm package or, on the native path, a platform-specific executable built with Bun that contains the same minified JavaScript from npm. There is no plugin directory where you drop a file to change a system prompt. tweakcc exists to fill that gap. It locates the installation, modifies the bundled code, and puts it back.
The README lists the surface area: system prompts, custom toolsets exposed through a /toolset command, input pattern highlighters, custom themes, thinking verbs, spinner animations, user message styling, input box border removal, table formats, and per-subagent model selection. It also lists behavioural patches rather than cosmetic ones: a fix for a frozen spinner when CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC is set, a CLAUDE_CODE_CONTEXT_LIMIT environment variable for custom Anthropic-compatible APIs, an opusplan[1m] model alias, a startup banner marking the build as patched, and non-blocking MCP connections with a configurable parallel connection batch size.
That mix is the honest description of the audience. Someone who only wants a different colour scheme is paying the same installation risk as someone who wants to rewrite the system prompt. The tool does not separate those concerns, and the README does not present a lighter-weight path for cosmetic-only changes.
The patch, unpack and repack pipeline
The mechanism visible in the material is a three-stage pipeline. tweakcc finds the Claude Code installation, applies a set of patches to the compiled JavaScript inside it, and writes the result back. Two CLI commands, unpack and repack, expose the middle of that pipeline directly, which tells you the tool is working on an extracted copy rather than editing in place blindly. A separate --restore flag reverses the operation.
Because the target is minified code, the patches are necessarily pattern-based rather than API-based. That is the central design constraint and it explains the shape of the project: a patch catalogue that has to be kept in step with whatever Anthropic ships next. The 4.0.0 notes describe custom patches created through sandboxed scripts, which is an admission that the maintainers cannot cover every case themselves. The adhoc-patch command exists so users can write a one-off patch without forking the repository. Remote config support, also new in 4.0.0, lets a config file pull customizations from a URL, which is the mechanism you would use to keep a team on the same set of patches.
The README states that native installs are supported because the native executable contains the same compiled JavaScript as the npm package, just packaged in a Bun binary. That is a reasonable claim and it is the reason the tool can claim parity across install methods, but it also means the patch surface is the same fragile surface in both cases.
Installing and running it on npm and native Claude Code
The README's primary entry point is npx tweakcc, which runs the interactive flow shown in the demo: create a theme, change UI colours, change the thinking format, pick a spinner style, apply, then launch Claude and switch themes with /config. The demo also shows the thinking verb format changing from "<verb>ing..." to "Claude is <verb>ing".
For programmatic use, the 4.0.0 notes say to install it into your project with npm i tweakcc and use the API. For one-off patches that do not belong in the main catalogue, the command is tweakcc adhoc-patch. For inspection and manual work there are tweakcc unpack and tweakcc repack, and tweakcc --restore to undo.
The README claims support for Windows, macOS and Linux, for native installs and for installs made through npm, yarn, pnpm, bun, Homebrew and Linuxbrew, nvm, fnm, n, volta, nvs, nodenv, and Nix including NixOS and nix-darwin, plus custom locations. Treat that list as a claim about path detection rather than a guarantee about your machine. The first thing worth doing on an unfamiliar setup is unpack, look at what was extracted, and confirm tweakcc found the right tree before you let it write anything back.
One configuration detail is worth separating from the rest. CLAUDE_CODE_CONTEXT_LIMIT changes the context limit used with models from custom Anthropic-compatible APIs, defaulting to 200k tokens. That is a patch to how Claude Code reasons about its own budget, not a cosmetic change, and it only makes sense if you are pointing Claude Code at an endpoint that actually has a different limit.
The unreleased-feature patches and their expiry date
Several patches in the 4.0.0 list are described as unlocking things that are not generally available: session memory, a /remember skill, Opus plan 1M mode, and a permissions bypass in sudo. The README frames these as unlocking private or unreleased features, and it credits individual contributors for several of them.
This is the part of tweakcc with the shortest shelf life, and the project structure makes that obvious. A patch that flips a flag for a feature Anthropic has already written but not enabled is cheap to maintain right up until the feature ships, at which point the patch is either redundant or wrong. A patch that flips a flag for a feature that is later removed or restructured simply breaks. The README does not describe a compatibility matrix mapping patches to Claude Code versions, so the practical way to find out whether a given unreleased-feature patch still applies is to run it and watch for failure.
The permissions bypass in sudo deserves a separate note. Anything that changes permission behaviour in a tool that executes commands on your behalf is a different category of change from a spinner animation, and the README presents it in the same list as the rest. That is a documentation choice worth being aware of when you decide what to enable.
Where tweakcc is the wrong tool
The clearest failure mode is version drift. tweakcc patches a compiled artifact by matching patterns in minified JavaScript. When Claude Code updates, those patterns can change, and a patch that no longer matches either fails or, worse, applies somewhere unintended. The README's own emphasis on --restore, unpack and repack reads as an acknowledgement that this happens. If your workflow depends on Claude Code auto-updating, you have committed to re-running and re-verifying tweakcc after each update, and to noticing when a patch silently stops applying.
The second case is any environment where the agent binary is subject to review. tweakcc modifies the executable you are running. The startup banner patch, which adds a message indicating you are running the patched version of CC, exists precisely because a patched build is otherwise indistinguishable from a stock one. If your organisation has a policy about which binaries run on developer machines, a tool whose purpose is to alter that binary is out of scope regardless of how good the individual patches are.
The third case is narrow needs. If the only thing you want is a different colour scheme, you are taking on a patch pipeline, a restore procedure and an upgrade ritual to change terminal colours. The cost is not the installation, it is everything after it.
The alternative: fork the prompts instead of patching the binary
The obvious alternative for the prompt half of tweakcc is to stop patching Claude Code and control prompts at the level of the project instead, through files that Claude Code already reads, such as AGENTS.md. Interestingly, tweakcc also ships an AGENTS.md support patch, which is a reminder that even the file-based approach is not always available without modification.
The difference in approach is real. A project-level instruction file is versioned with your repository, reviewed in pull requests, and unaffected by a Claude Code upgrade. It cannot change the UI, cannot add a /toolset command, and cannot alter how the binary behaves, but it also cannot break when Anthropic recompiles. tweakcc sits at the other end: it can change anything in the artifact, and it inherits the artifact's volatility. Choosing between them is choosing between a stable, narrow surface and a broad, fragile one.
There is a middle position the README implies but does not spell out. Use tweakcc for the things only a binary patch can do, such as UI styling, spinner behaviour, or the MCP startup change, and keep prompt-level customisation in files that travel with the project. That split keeps the number of patches you depend on small, which is the same as keeping the number of things that can break on upgrade small.
Maintenance cost, licence and upgrade ritual
tweakcc is MIT licensed, which places very few restrictions on what you do with the code: you can use, modify and redistribute it, including in commercial settings, provided the licence text and copyright notice travel with it. That is a statement about the licence, not advice about your situation, and it says nothing about the terms under which you may modify Claude Code itself. Those terms come from Anthropic, not from this repository, and the README does not address them.
The maintenance picture is more concrete. Releases in the supplied material run v4.3.1 in July 2026, v4.3.2 later that month, and v4.3.3 in August 2026, with the last push to the default branch in September 2026. That cadence suggests active upkeep, but it also suggests the patch catalogue needs frequent adjustment, which is consistent with the version-drift problem above. The 4.0.0 release added an API, adhoc patches, and remote config in one go, so the project is still expanding its surface rather than settling.
Your upgrade ritual has a specific shape: update Claude Code, then re-run tweakcc, then check that each patch you rely on still applies, then run --restore if something is wrong. Remote config is the lever that makes this manageable across a team, since the set of customizations lives in a file you control rather than in each developer's interactive session. The cost is not measured in money; it is measured in the number of times per month you are willing to repeat that sequence.
Editorial conclusion
Adopt tweakcc if you already run Claude Code daily, you have opinions about its system prompts or UI, and you are comfortable re-running a patch step after each Claude Code upgrade. Do not adopt it on a shared or managed machine where a modified agent binary has to pass someone else's audit, and do not adopt it expecting the unreleased-feature patches to survive indefinitely. Before installing, verify three things: that your Claude Code install is one of the layouts tweakcc detects (check with the unpack command before you patch anything), that you have a working restore, and that the specific patch you want still applies to your current Claude Code build. The restore path is the deciding factor, not the feature list.
Community notes