이거 그냥 켜두면 되는 옵션입니다. `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB=1`을 환경변수로 export해두면, Bash 툴이나 훅, MCP stdio 서버로 프로세스를 fork할 때 Anthropic API 키랑 클라우드 제공자(AWS/GCP/Vertex 등) 인증정보를 자식 프로세스 환경에서 지워버립니다.
왜 필요하냐면, 기본 동작에서는 Claude Code가 Bash 툴로 실행하는 명령이 부모 프로세스 환경을 그대로 상속받기 때문입니다. 즉 모델이 짠 스크립트 안에서 `env`나 `printenv`만 쳐도 `ANTHROPIC_API_KEY`가 그대로 노출됩니다. MCP 서드파티 서버를 stdio로 붙여 쓰는 경우엔 더 위험한데, 그 서버 코드가 뭘 하는지 다 검증한 사람 별로 없을 겁니다. 자식 프로세스 입장에서 상속받은 키를 어딘가로 흘려도 알 방법이 없습니다.
실무에서 겪은 함정 하나. 이걸 켜면 서브프로세스에서 `aws` CLI나 Anthropic SDK를 직접 호출하는 스크립트가 인증 못 하고 깨질 수 있습니다. 예를 들어 훅에서 배포 스크립트를 돌리는데 그 안에서 AWS 자격증명을 부모 환경변수로 기대하고 있었다면 갑자기 credential not found로 죽습니다. 이런 케이스는 해당 스크립트에서 자체적으로 프로파일이나 credential 파일을 읽도록 바꿔야 합니다. 무작정 켜고 나서 "왜 훅이 안 돌지" 하지 마세요.
버전 얘기를 하자면 관련 격리 기능이 최근에 세분화됐습니다. v2.1.216에서 파일시스템 격리를 환경변수 스크럽과 독립적으로 켜고 끌 수 있게 분리됐고, 지금 최신은 v2.1.220입니다. 이전 버전에서 격리 옵션이 뭉뚱그려져 있어서 하나만 쓰고 싶은데 다 딸려오던 불편이 있었는데 그게 풀린 겁니다. `claude --version`으로 먼저 확인하고 216 미만이면 이 조합 자체가 안 됩니다.
한 가지 더. 관리형 설정(managed settings) 쓰는 조직이라면, 서버가 밀어주는 설정 중 비민감성 토글은 이제 승인 프롬프트를 안 띄우게 바뀌었습니다. 편해진 거긴 한데, 반대로 관리자가 env scrub 같은 걸 조용히 켜거나 꺼도 로컬 사용자는 프롬프트로 못 알아챌 수 있다는 뜻입니다. 팀에서 이 값을 관리형으로 강제하고 있는지 한 번 확인해보시는 게 좋습니다.
개인적 판단으로는 이 옵션은 켜는 게 맞습니다. 끄고 얻는 이득이 "스크립트에서 키 상속받아 편하게 쓰기" 정도인데, 그건 애초에 위험한 패턴이라 고치는 게 낫습니다. 다만 켜기 전에 현재 훅·MCP 서버가 어떤 인증정보에 의존하는지 목록부터 뽑아보세요. 그거 안 하고 켜면 조용히 뭔가 깨져서 디버깅에 반나절 씁니다.