メインコンテンツまでスキップ
このページはまだお使いの言語に翻訳されていないか、翻訳が技術レビュー待ちです。以下には英語の原文を表示しています。 英語のページを開く

E1001 -- API key found in agent settings file

Severity: ERROR. Run controlzero migrate to fix.

What happened​

controlzero doctor found a Control Zero API key (cz_live_... or cz_test_...) baked into a hook command inside an agent settings file. Common locations:

  • ~/.claude/settings.json (Claude Code)
  • ~/.gemini/settings.json (Gemini CLI)
  • ~/.codex/config.toml (Codex CLI)
  • Cursor / Windsurf / VS Code Copilot / Cline / Antigravity / Adal / JetBrains MCP config files

Why it matters​

When the coding agent invokes the hook, it runs the command literally, which means the API key appears as part of the process arguments. The key is then visible to:

  • Anyone reading the agent's terminal scrollback
  • Process listings (ps aux) on the same machine
  • Shell history (if the agent logs the command line)
  • Log files the agent writes
  • Crash dumps and core files
  • Any process running as the same user

If you screenshare or screen-record while the agent is active, the key is captured there too. The 2026-05-14 customer screenshot incident is what this check exists to prevent recurring.

How to fix​

Run the auto-fix:

controlzero migrate

migrate does three things:

  1. Removes the inline CONTROLZERO_API_KEY=cz_live_... prefix from every leaked hook command.
  2. Writes the key to ~/.controlzero/config.yaml with permissions 0600 (owner-only).
  3. Sets ~/.controlzero/ to 0700 so the file is protected even if another local user tries to read it.

After migrate, run controlzero doctor again to confirm the box is clean.

Manual fix​

If you prefer to fix the file by hand, edit the agent settings file and change:

{
"command": "CONTROLZERO_API_KEY=cz_live_abcd1234 controlzero hook-check"
}

to:

{
"command": "controlzero hook-check"
}

Then write the key to ~/.controlzero/config.yaml:

api_key: cz_live_abcd1234

and tighten the permissions:

chmod 700 ~/.controlzero
chmod 600 ~/.controlzero/config.yaml

After the fix​

Rotate the leaked key. Even after you've cleaned the file, the key may already be present in terminal scrollback, screen recordings, or backup files. Rotate it in the dashboard (Settings -> API Keys -> Revoke and create new) and update ~/.controlzero/config.yaml with the new value.

Prevent recurrence​

  • Always upgrade to the latest controlzero SDK before running controlzero install <agent>. Versions before 1.5.2 wrote the inline form; 1.5.2 and later write only the safe form.
  • Run controlzero doctor after every install.
  • Wire bash scripts/ci/check-no-key-leaks.sh into your CI if you check agent settings files into version control.