--bare + CLAUDE_CODE_OAUTH_TOKEN = silent auth failureRun 25487401956 produced clean snapshots but parse_failed: true on every version, with ~700ms empty-stderr exits. Tracked it to a flag-vs-auth incompatibility documented in claude --help but not in the script's comment.
CLAUDE_CODE_SIMPLE=1. Anthropic auth is strictly ANTHROPIC_API_KEY or apiKeyHelper via --settings (OAuth and keychain are never read). 3P providers (Bedrock/Vertex/Foundry) use their own credentials.
// scripts/cc-triage.mjs (before)
spawnSync('claude', [
'-p',
'--bare', // ← locks auth to API key only
'--max-turns', '1',
'--output-format', 'text',
'--model', 'claude-opus-4-7',
], { input: prompt, env: process.env, ... })
# .github/workflows/claude-release-watch.yml
env:
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# ANTHROPIC_API_KEY is NOT set on this workflow
The CLI sees --bare, refuses to read OAuth, falls back to ANTHROPIC_API_KEY which is unset, exits 1 silently, and the --bare-suppressed error path means stderr is empty. Looks identical to "binary missing" or "network down."
"claude native binary not installed" (clear).install.cjs after --ignore-scripts — binary lands.claude --help: spotted the --bare auth restriction.scripts/cc-triage.mjs:127-149 — it passes both --bare AND relies on CLAUDE_CODE_OAUTH_TOKEN in env.'-p', '--bare', '--max-turns', '1', '--output-format', 'text', '--model', 'claude-opus-4-7'
exit 1 with empty stderrparse_failed: true'-p', '--max-turns', '1', '--output-format', 'text', '--model', 'claude-opus-4-7'
--bare actually buy us, and is losing it OK?--bare skips hooks, LSP, plugin sync, attribution writes, auto-memory, background prefetches, keychain reads, and CLAUDE.md auto-discovery. For a one-shot text-extraction call running headless on a CI runner with no project files, none of those matter — there's no project to discover, no hooks installed, no keychain. The "minimal mode" was load-bearing-looking but actually unnecessary.
tests/integration/test-cc-triage.sh: 15/15 pass after edit (uses fixture path, decoupled from real CLI invocation)Once merged, dispatch claude-release-watch.yml manually OR run node scripts/cc-triage.mjs --retry-failed against the existing #1628 to refresh the parse_failed sentinels. Adoption issues for the 20 features in #1623's matrix should then file naturally.