Claude Code themes zijn mods: check ze eerst
Een thema voor Claude Code is een mod die met jouw rechten draait. Van de 48 thema's van dag één die wij konden keuren, raken er 11 de lijst waar Anthropic voor waarschuwt.

Het voorbeeldthema van Anthropic zelf hangt een haak aan elke prompt die je verstuurt en aan elk antwoord van Claude. In de antwoorden zoekt het één woord, “merged”, om vuurwerk af te steken. Je prompt leest het niet. Toch laat het zien wat Claude Code themes zijn: code met jouw rechten, geen lijstje kleuren.
Anthropic kondigde de thema’s aan in de nacht van 13 op 14 november. Je geeft de desktop app eigen kleuren en een bewegende achtergrond, of je vraagt Claude er een te maken. Dat loopt via Claude Code mods.
Wij haalden thema’s van dag één van GitHub en lieten Claude Code zelf opsommen wat ze kunnen. Van de 48 die het kon lezen, raken er 11 de lijst waar Anthropic beheerders voor waarschuwt.
Een thema is een mod, en een mod mag wat jij mag
De docs van Anthropic zijn er open over. “A mod runs with your permissions”, staat er, en: “Mods aren’t sandboxed.” Een mod kan volgens dezelfde pagina op je computer handelen als jij, je geheimen lezen, je sessie zien en wijzigen, dingen doen zonder te vragen en je verbruik opmaken.
Eén ding kan een mod niet opnieuw tekenen: de toestemmingsvraag. “A mod can restyle much of Claude Code’s interface, but not the permission prompt.” Dat venster blijft dus van Claude Code. Al kan een mod met tool.check een toolaanroep goedkeuren voordat jij de vraag ziet. De rest hangt af van wie het thema schreef.
In dezelfde video typt iemand “make me a theme with a synthwave sunset and neon pink accents”. Claude schrijft de code, en in het gesprek staat: “In this permission mode the mods Claude writes turn on without asking.” De sessie staat op Auto. Je vraagt om kleuren en krijgt code die meteen draait.
Voor een thema dat je zelf bestelt is dat prima. Het wordt anders bij een thema van iemand anders. Wij schreven eerder over Claude plugins bouwen. Een mod is de soort plugin die in Claude Code zelf ingrijpt.

Wat haakt het voorbeeld van Anthropic aan?
Het officiële voorbeeld heet theme-examples en staat in de plugin repository van Anthropic op GitHub. Versie 0.4.3 bevat twintig scènes. Wij lieten Claude Code 2.1.325 de map keuren met claude plugin validate. Uitkomst: acht haken en 21 aanroepen. Drie daarvan staan op de lijst waar Anthropic beheerders voor waarschuwt.
Dat is netjes, en de README zegt het er zelf bij: “It looks at what Claude says for one word, “merged”, and keeps none of it. At the start of each turn it checks the chosen theme and reads no text of your prompt.”
In de code vonden wij hetzelfde. De haak op je prompt geeft hem ongewijzigd door, en de zoekterm is letterlijk het woord merged.
Alleen weet je dat pas als je de README gelooft of de code leest. Aan de buitenkant ziet een thema dat meeleest er hetzelfde uit als een thema dat alleen kleurt.
Check een thema voordat je het aanzet
Claude Code kan je vertellen wat een mod kan zonder hem te draaien. Het commando claude plugin validate ./map drukt af waar de code aan haakt en wat ze aanroept. Plak die uitvoer hieronder. De check legt hem naast de lijst van Anthropic en zegt in gewone taal wat het thema kan.
De check leest alleen wat validate afdrukt. Groen betekent dat de code volgens validate niets van de lijst aanroept. Het betekent niet dat iemand de code heeft nagekeken. Staan er geen regels met hooks en calls in je uitvoer, dan kon validate de code niet lezen en zegt de check dat ook.
11 van de 48 gekeurde Claude Code themes raken de lijst waar Anthropic voor waarschuwt
Wij zochten op 14 november om 14.24 uur op GitHub naar thema’s die sinds de aankondiging zijn aangemaakt. Tien zoektermen gaven 78 repo’s. In 52 daarvan zat minstens één mod, samen 84 mods. Alles ging door validate van Claude Code 2.1.325, zonder een mod te draaien.
Validate kon 57 van de 84 mods lezen. 48 daarvan zetten kleuren of tekenen een achtergrond. Dat zijn onze 48 thema’s. De 27 mods die validate niet kon lezen tellen niet mee. Daar kunnen ook thema’s tussen zitten.
35 van de 48 doen alleen tekenwerk, onthouden een keuze of zetten een timer. Twee gebruiken daarnaast iets wat niet op de lijst van Anthropic staat. Elf raken minstens één punt van die lijst.
Vier thema’s haken aan elke toolaanroep en een vijfde aan één benoemde tool. Drie haken aan elke prompt. Vier kunnen een programma starten, één kan netwerkverzoeken doen. Welke repo’s het zijn, noemen we niet. De telling zegt wat de code kan. Wat de maker ermee wil, zegt ze niet.
| Groep | Thema’s |
|---|---|
| Alleen tekenen, onthouden en timers | 35 |
| Ook iets buiten de lijst | 2 |
| Minstens één punt van de lijst | 11 |
Twee van de elf lezen alleen een bestand, en bij ons tellen ze toch mee
Onze telling is streng op een manier die thema’s tekortdoet. $.fs.read staat op de lijst omdat een mod daarmee elk bestand kan lezen waar jij bij kunt. Het is ook gewoon hoe een thema een eigen plaatje laadt. Twee van de elf raken alleen dat ene punt.
Hetzelfde geldt voor omgevingsvariabelen. Validate drukt af welke namen de code letterlijk opvraagt. Bij deze thema’s waren dat HOME, OS en mappen voor instellingen. Geen naam leek op een sleutel of wachtwoord, en geen thema schrijft een variabele. Een naam die de code pas tijdens het draaien samenstelt, zie je daar niet.
De telling zelf heeft ook grenzen. We zochten alleen op GitHub, met Engelse zoektermen, op één middag. We lazen niet van elk thema elke regel. Van geen enkel thema zeggen wij dus dat het iets kwaads doet.
| Punt van de lijst | Thema’s |
|---|---|
| tool.call, waarvan één op één benoemde tool | 5 |
| $.fs.read | 5 |
| $.env.get | 4 |
| $.process.run | 4 |
| prompt.submit | 3 |
| $.fs.write | 2 |
| $.http.fetch | 1 |
| $.model.complete | 1 |
| $.settings.read | 1 |
Geslaagd voor validate zegt niet dat een thema veilig is
Om te zien waar de grens ligt, schreven we twee thema’s. Het ene zet alleen kleuren. Het andere doet zich voor als thema, maar vraagt ANTHROPIC_API_KEY op en kan bestanden lezen, programma’s starten en netwerkverzoeken doen. We hebben het alleen laten keuren. Het heeft nooit gedraaid en staat nergens online.
Validate verzwijgt niets. De naam van de sleutel staat gewoon in de uitvoer. Het commando keurt alleen niet af, en dat zegt het er zelf bij: “The directory also runs a safety scan and a policy review that this command does not.” Lezen moet je dus zelf, of met de check hierboven.
De omgekeerde fout bestaat ook. 27 van de 84 mods, uit twee repo’s, kwamen niet door validate. Bij geen daarvan stond een regel met haken of aanroepen. Over die code weet je niets. Anthropic schrijft beheerders voor: “Don’t approve a mod that fails this command, because some failures don’t stop it from loading.”
Haakt aan session.start. Roept $.theme.set aan. Uitslag: Validation passed with warnings.
Haakt ook aan prompt.submit en tool.call. Roept $.env.get, $.fs.read, $.http.fetch en $.process.run aan. Uitslag: Validation passed with warnings.
Waarom zie je het thema niet in je terminal?
“On desktop” betekent in de aankondiging de desktop app, en niet Claude Code in je terminal. De docs zeggen: “The terminal draws no backdrop” en “Claude Code in the terminal keeps its own colors”. Onder de post op X vroegen meerdere mensen erom. “Now bring this to terminal (TUI)”, schreef er een.
Wij probeerden het toch, in een terminal op onze eigen VPS voor AI agents. Een mod vroeg in Claude Code 2.1.322 om een achtergrond. Het antwoord was isDrawn false, met als reden: “no attached desktop or mobile client says it draws backdrops”.
Dan de versie. Anthropic zegt: werk de desktop app bij. De docs noemen Claude Code 2.1.324 als ondergrens voor kleuren in het Code tabblad. Ter vergelijking: op npm stond op 14 november 2.1.311 als stable en 2.1.325 als latest. Thema’s werken nu alleen in lokale sessies. Voor cloud sessions schrijft Anthropic “coming soon”.

Grijs op grijs tekent de app niet
Niet elk palet komt erdoor. De docs beschrijven een geweigerd thema: de melding begint dan met “Desktop won’t paint this theme”. Wij gaven de kleurencontrole van Claude Code 2.1.325 vijf paletten. De app zelf hebben we niet zien weigeren. Dit is wat de controle terugzegt.
Het palet uit het voorbeeld in de docs kwam erdoor, net als ons eigen palet in groen en zand. Grijze tekst op een grijs vlak werd geweigerd, net als een donker palet met te lichte vlakken. De grens ligt dus bij leesbaarheid.
Een kleurnaam in de code gaf een fout: “Theme colors are six-digit hex, like #1e1e2e”. Vraag je Claude om een thema, dan mag je kleuren gewoon bij naam noemen. Claude zet ze om naar hexcodes.
| Meting | Verhouding |
|---|---|
| Grijze tekst op een grijs vlak, lichte stand | 2,45:1 |
| Daaronder tekent de app niet | 3:1 |
| Wat de controle wil zien | 4,5:1 |
Zo zet je een thema aan en weer uit
De stappen hieronder komen uit de docs van Anthropic. Wij hebben ze nog niet zelf in de desktop app doorlopen. Onze eigen tests draaiden in de terminal.
- Werk de desktop app bij en open een lokale sessie. In cloud sessions werken thema’s nog niet.
- Vraag Claude om een thema. De docs geven als voorbeeld: “make a mod that makes the app cream in light mode and dark brown in dark mode”.
- Thema van iemand anders? Haal de map binnen, zet nog niets aan en draai
claude plugin validate ./mapop Claude Code 2.1.323 of nieuwer. - Plak de uitvoer in de check hierboven. Zie je tool.call, prompt.submit, $.process.run of $.http.fetch, lees dan de code of laat het thema liggen.
- Zet één thema tegelijk aan. Een nieuw thema vervangt het vorige, en een mod die het thema wist, wist ook dat van een andere mod.
- Kleuren weg? Zet de mod uit, start een nieuwe lokale sessie, zoek in Settings op “code appearance” en kies Remove colors.
De eerste thema’s in de directory van Anthropic worden de echte test
Alles in onze telling kwam los van GitHub. Voor de plugin directory van Anthropic gelden strengere regels. Daar draait volgens validate een safety scan en een policy review. Hoeveel thema’s daar doorheen komen, en of meelezen op elke prompt er mag, wordt zichtbaar zodra de eerste thema’s er staan.
Tot dan ben je zelf de controle. Nieuw met Claude Code, of wil je eerst weten wat hooks, slash commands en subagents doen? Begin dan daar. Meer metingen als deze staan op 1704 Media.
Check het thema voordat het meeleest
Draai claude plugin validate op de map, plak de uitvoer en je ziet welke van de punten uit de lijst van Anthropic dit thema raakt.
Naar de themacheck