clean: false on an engine or a seat
when a run should use your own setup, the way you run the tool yourself.
The default
On every engine that can run clean,clean is on by default, so a workflow
behaves the same for everyone who runs it. Set clean: false to run on your
own setup. Grok has no clean mode, so it always runs on your setup unless
you pass authFile. The API, Mastra and OpenAI Agents SDK engines load no setup and have no
clean option. The engines table shows each one.
What a clean run leaves out
- Your own setup stays out. Your personal settings, hooks, plugins,
skills, MCP servers and global instruction files, such as
~/.claude/CLAUDE.md, don’t load. - The repository’s setup still applies. Its
AGENTS.md,CLAUDE.mdand project config are part of the code the run works on. - Your login stays. The run still uses your own sign-in and subscription.
Turn it off
The option has the same name on every engine. Clean is the default; this is how to run on your own setup instead:- Claude CLI.
claude(model, { clean: false })ornew ClaudeCliEngine({ clean: false }). - Claude Agent SDK.
new AgentSdkEngine({ clean: false }). - Codex CLI.
codex(model, { clean: false })ornew CodexEngine({ clean: false }). - OpenCode CLI.
opencode(model, { executable, clean: false })ornew OpenCodeCliEngine({ ...options, clean: false }). - Devin CLI.
devin(model, { clean: false })ornew DevinCliEngine({ clean: false }). - Grok CLI. Always runs on your setup;
clean: truethrows an error that says why. Grok has no clean mode.
The engines
“Read-only held” means a step in theread workspace mode was asked to
create a file, and no file in the repository changed.
Where an engine falls short
- Claude CLI and Claude Agent SDK. On your own setup, your own hooks still run during a read-only step, and a hook that writes files still writes. Clean mode also leaves out the repository’s own MCP servers.
- Codex CLI. Your own skills and command rules still load in clean mode.
- Devin CLI. Your own MCP servers, skills and personal rules can still load in clean mode: clean mode replaces only your Devin settings file.
- OpenCode CLI. Your own skills in
~/.claude/skillsand~/.agents/skillsstill load in clean mode. OpenCode’s switch that skips them also skips the repository’s own skills. Clean mode moves the whole config folder, so commands the step runs lose their settings in it too. Free models refuse a tool-limited run, so the proof needs a paid model. - Grok CLI. No clean mode: Grok’s strict sandbox reads no login outside its own home folder.
Check it on your own machine
From a clone of the repository, build the packages and run the proof. It runs each installed CLI the ordinary way, with your own logins, so it spends a little of each subscription. It isn’t part of CI.- Engine. The engine the row is about. Its first row shows the version of its CLI.
- Run. The mode: your setup or clean, and read or write.
- Answered. Whether the engine replied with the word from the file.
- Files changed. Whether the step asked to create a file changed any
file in its scratch repository.
-means that step failed without changing a file, so it shows nothing about read-only. - Note. Which files a step changed, or why a step failed.
Next steps
- Claude CLI Engine: the
cleanoption and the read workspace mode. - API: how the conformance kit checks an engine’s clean mode.