재현되지 않는 스크립트의 진짜 원인
`claude -p`의 기본 로드 범위와 `--bare`가 바꾸는 것
로컬에서 완벽하게 돌던 claude -p 스크립트가 동료 머신이나 CI 러너에서 다른 결과를 냅니다. 원인은 모델의 변덕이 아니라 무엇이 로드되었는지가 머신마다 달랐다는 사실입니다. -p는 실행을 비대화형으로 바꿀 뿐, 작업 디렉토리와 ~/.claude의 hooks·skills·plugins·MCP 서버·CLAUDE.md를 대화형 세션과 똑같이 자동 검색합니다. --bare는 이 자동 검색을 전부 건너뛰어 시작을 가볍게 하고, 필요한 컨텍스트만 --settings·--mcp-config·--append-system-prompt로 코드에 적히게 만듭니다. 헤드리스 설계의 첫 결정은 프롬프트 문구가 아니라 로드 범위를 누가 통제하느냐입니다.
| 실행 방식 | 로드되는 것 | 이 방식을 고르는 때 |
|---|---|---|
claude -p 기본 | 대화형과 동일한 전체 자동 검색 | 로컬 스크립트, 프로젝트 설정이 필요할 때 |
claude --bare -p | 자동 검색 생략, Bash·읽기·편집만 | CI·스크립트, 머신 간 동일 결과가 필요할 때 |
claude --safe-mode | 인증·모델·권한 유지, 커스터마이즈만 해제 | hook·plugin 문제를 좁혀 진단할 때 |
--setting-sources user | 사용자 설정만, 프로젝트 스킬 차단 | 프로젝트 설정만 배제하고 싶을 때 |
- 로드 목록 적기지금 호출이 어떤 hooks·skills·MCP·
CLAUDE.md를 끌어오는지 먼저 나열합니다. - 자동 검색 끊기CI·스크립트 호출을
claude --bare -p형태로 바꿔 로드를 0에서 시작합니다. - 필요한 것만 주입
--settings·--mcp-config·--append-system-prompt·--agents로 실제 필요한 컨텍스트만 되돌립니다. - 인증 경로 확인
--bare는 OAuth와 키체인을 건너뛰므로ANTHROPIC_API_KEY나apiKeyHelper로 키를 공급합니다.