Claude Code unbiased
I once asked Claude Code which CMS it would recommend. I wanted to see which one it's biased toward. It said Drupal. Didn't expect that at all. When I asked why, it said it saw my custom Drupal skill and assumed I work with Drupal and would be comfortable with it.
Fair enough. My instructions, skills and settings make my agent biased. For this question, I needed an unbiased one. A plain chatbot would do, but we don't look for easy ways, huh? 😁
So I looked for a way to run Claude Code without my config and found the --safe-mode flag. The description sounded perfect: no CLAUDE.md, no skills, plugins, hooks or MCP servers, my subscription as usual. A clean default Claude Code ✨
I asked again.
Drupal
(╯°□°)╯︵ ┻━┻
This time the reasoning was: my email in the agent's context → amazee.io domain → a company known for Drupal hosting → the user works at a Drupal-centric company.
So much for a clean Claude Code.
That's how /ccu (Claude Code, Unbiased by me) came about: a skill that runs a prompt in a clean Claude Code instance.
I could have made it a shell command that opens a full unbiased Claude Code session. But usually I don't need to work in one. I just need a quick check now and then. So it's a skill: my usual agent writes the prompt, copies the files the task needs into an empty folder, runs a clean instance there and brings back its answer.
What does a clean instance know about me? Nothing. Out of the box, it only sees the OS, the shell, a temp path and today's date.
How the instance is isolated
Each run gets a fresh temporary directory with two folders: work, the instance's working directory with the task files, and home, an empty home directory. Then, roughly:
cd <run dir>/workenv -i HOME=<run dir>/home PATH=$PATH CLAUDE_CODE_OAUTH_TOKEN=<token> \ claude -p --model <model> < promptenv -i starts from an empty environment, so nothing leaks from my shell. The home directory is empty: no config, skills, memory or history. The token is the one my current session uses; /ccu takes it from the macOS Keychain. Same subscription, but no email: Claude Code keeps the account profile in .claude.json, written at login, and this home has never seen a login.
Permissions have to be granted up front
claude -p denies every tool that needs approval: there's nobody to approve it. So the main agent lists the tools the task needs in work/.claude/settings.json, e.g. for a web task:
{"permissions": {"allow": ["WebFetch", "WebSearch", "Bash(curl:*)"]}}Claude Code ignores these settings in a folder it doesn't trust, so /ccu also marks work as trusted in the home's .claude.json:
{"projects": {"<run dir>/work": {"hasTrustDialogAccepted": true}}}The transcript stays for me
After the run, /ccu turns the raw session log into a readable transcript.md. The main agent relays the instance's answer but never reads the transcript. I can read it myself when I want to.
How I use it
In all sorts of ways. One of them: this blog's reviewer personas, like an editor or a colleague.
And the CMS? Through /ccu, Claude Code recommended Payload.
┬─┬ノ( º _ ºノ)