대니
danny's blog@dannywon_dev
발행 132 · 대기 181

1인 개발자. 클로드 코드를 팀처럼 굴린다. 매일 겪은 것만 쓴다.

← 클로드 코드

클로드 코드 자동 모드가 만든 soft_deny 에 없던 것

자동 생성된 안전장치 39줄을 읽다가, 사고가 나서 만든 규칙 두 개가 빠진 걸 발견했다

자동 모드를 켰더니 설정 파일에 안전장치 39줄이 저절로 생겨 있고, 읽어보면 생각보다 잘 만들어져 있다. 이때 하게 되는 실수는 거기 뭐가 들어 있나를 읽는 것이다.

2026-08-23 14:39, 클로드 코드 자동 모드를 켰다. ~/.claude/settings.json 에 autoMode 블록 39줄이 생겼다. 손으로 쓴 게 아니라 내 지난 대화 기록을 훑어서 만든 초안이었다. 항목 설명에 근거까지 붙어 있었다.

seen 47× in this project's own transcripts

구성은 셋이었다.

  • allow 2줄 — 자주 쓴 CLI 두 개를 확인 없이 쓰게
  • soft_deny 2줄 — 그 CLI 의 파괴적 하위 명령, 그리고 운영 DB 에 WHERE 없는 DELETE/DROP/TRUNCATE
  • environment 33줄 — 조직·저장소 공개 범위·신뢰 도메인·민감 자료 위치

읽고 처음 든 생각은 "꽤 잘 만들었네"였다. soft_deny 두 줄은 내가 생각도 못 한 자리였다. WHERE 없는 DELETE 는 내 규칙 목록에 없었다.

빠진 두 줄

soft_deny 를 다시 보다가 없는 게 눈에 들어왔다. 내 CLAUDE.md 에 빨간 글씨로 박아둔 규칙 두 개가 거기 없었다.

  1. 커밋·푸시는 매번 승인받는다. 2026-08-03에 "이거 고쳐줘"를 작업 요청이 아니라 커밋 신호로 읽고 밀어버린 적이 있어서 생긴 규칙이다.
  2. rm 대신 trash 를 쓴다. 이 맥은 타임머신이 꺼져 있어서 rm -rf 가 영구다. 2026-07-13에 2.2GB 를 그렇게 날렸고 복구가 안 됐다.

둘 다 실제로 사고가 나서 만든 규칙인데, 자동 생성은 둘 다 몰랐다.

왜 몰랐나 — 안 한 일은 기록에 안 남는다

자동 생성은 기록에서 「내가 자주 한 일」을 본다. 그런데 규칙이 잘 지켜지고 있으면 안 한 일은 기록에 남지 않는다. 47번 쓴 명령은 47줄로 보이는데, "안 지우기로 해서 안 지운 것"은 0줄이다.

그래서 가장 잘 지켜온 규칙일수록 자동 생성의 눈에 안 보인다. 생존 편향과 같은 모양이다. 돌아온 비행기의 총알 자국만 세면, 정작 맞으면 안 돌아오는 자리를 못 찾는다.

한 가지 더 걸린 게 있다. 이 설정은 사용자 설정에서만 읽히고 프로젝트별 설정은 무시된다(공식 문서에서 확인했다). 그러니까 모든 프로젝트에 실린다. 그런데 자동 생성된 environment 33줄은 그때 열려 있던 저장소 한 곳만 보고 쓰여 있었다. "신뢰하는 저장소: 이 저장소와 그 원격뿐" 같은 문장이 다른 프로젝트에도 그대로 간다.

두 줄을 더했다

soft_deny 형식은 규칙 목록이 아니라 평문이라, 왜 막는지를 같이 적을 수 있었다.

Bash(git push:*) — 푸시는 매번 따로 승인받는다. 저장소에 따라 푸시가 곧 배포다
Bash(rm:*)       — 이 기기는 백업이 없어 rm 이 영구다. trash 로 지우고 대상을 먼저 보여준다

JSON 문법을 파싱해서 확인하고 커밋했다.

규칙을 문서에 적는 것과, 도구가 그 규칙을 아는 것은 다른 일이었다. 자동으로 만들어진 안전장치를 받았을 때 읽을 것은 들어 있는 항목이 아니라 내가 아는 위험 중 뭐가 빠졌나다. 들어 있는 건 눈에 보이고, 빠진 건 안 보인다.

← 목록으로