Claude Code 비밀값 노출 원인과 로컬 설정 파일 점검법
Claude Code CLI에서 Bash 명령을 다시 묻지 않기로 승인하면 허용 규칙이 프로젝트의 .claude/settings.local.json 에 문자열로 저장된다. 규칙에 토큰이나 비밀번호가 평문으로 들어 있으면 값도 함께 남고, 이 파일을 공개 저장소에 커밋해 푸시하면 값도 공개된다. 공식 문서와 Apiiro 보고서는 2026-11-09 KST에 확인했고, Git 동작은 더미 파일로 직접 실행해 봤다. 영구 승인이 모든 명령을 덤프하지는 않지만, 비밀값이 든 정확한 명령을 승인하고 이 파일이 Git에 커밋되면 평문이 저장소에 남는다. Claude Code 비밀값 노출은 승인 규칙에서 어떻게 시작될까 다시 묻지 않기를 고른 승인은 어디에 남을까. Anthropic의 Configure permissions 공식 문서는 Bash 영구 승인이 저장소와 명령별로 지속된다고 설명한다. CLI 기준 저장 위치는 .claude/settings.local.json 이고, 규칙 형식은 Tool 또는 Tool(specifier) 다. Bash 규칙에 * 가 없으면 정확한 명령 전체를 허용한다. * 가 있으면 그 자리에 어떤 텍스트가 와도 허용한다. 그래서 아무 명령이나 한 번 승인하면 비밀값이 저장된다는 말은 과장이다. 반대로 헤더나 환경변수 할당에 실제 토큰을 넣은 명령을 정확한 규칙으로 승인하면, 그 문자열이 permissions.allow 에 평문으로 들어간다고 본다. 비밀값이 든 명령은 지속 승인을 거쳐 로컬 설정의 허용 규칙이 된다. 공개 저장소까지 이어지는 것은 Git 커밋과 공개 저장소 푸시가 겹칠 때뿐이다. 공개 저장소에서는 얼마나 발견됐을까 Apiiro의 보고서 Coding Agents Are Leaking Your Secrets to GitHub는 2026-11-01부터 03일까지 공개 GitHub 기본 브랜치를 읽기 전용으로 검색한 결과다. 아래 수치는 모두 Apiiro의 분류 결과이며, 이번에 다시 조사하지 않았다. 공개 .cl...