POOOLING FOREST
AI가 내 코드를 날려버리기 전에 설치해야 할 안전장치: Claude Code Safety Net - AI 에이전트가 코드를 삭제하거나 위험한 명령어를 실행하지 못하도록 막아주는 claude-code-safet
Engineering & Tech

AI가 내 코드를 날려버리기 전에 설치해야 할 안전장치: Claude Code Safety Net

AI 에이전트가 코드를 삭제하거나 위험한 명령어를 실행하지 못하도록 막아주는 claude-code-safety-net 플러그인의 필요성과 설치 방법을 소개합니다.

김영태

테크리드

안녕하세요. 풀링포레스트 테크리드 김영태입니다.

개발자라면 누구나 한 번쯤은 겪어봤을 겁니다. 터미널 창에서 무심코 엔터를 누른 순간, 등골이 서늘해지면서 식은땀이 흐르는 그 끔찍한 기분을 말이죠. rm -rf를 잘못 쳤거나, 아직 커밋하지 않은 소중한 코드들이 git reset --hard 한 방에 허공으로 사라질 때의 그 허탈함은 겪어보지 않은 사람은 모릅니다.

최근 우리 팀에서도 Cursor나 Claude Code 같은 AI 에이전트 도구를 적극적으로 도입하고 있습니다. 생산성이 눈에 띄게 올라가는 건 사실이지만, 동시에 새로운 종류의 공포가 생겼습니다. 바로 "AI가 내 지시를 잘못 이해해서 대형 사고를 치면 어떡하지?"라는 불안감입니다.

솔직히 고백하자면, 저도 며칠 전 아찔한 경험을 했습니다. 로컬에서 복잡한 리팩토링 작업을 하던 중, Claude Code에게 "작업 트리 좀 정리해줘"라고 모호하게 지시했습니다. 저는 불필요한 로그 파일이나 임시 파일을 지워달라는 의도였지만, 이 친구는 제 의도를 너무 과격하게 해석했습니다.

git clean -fgit checkout -- . 명령어를 순식간에 제안하고 실행하려고 하더군요. 다행히 제가 실행 직전에 멈췄기에 망정이지, 하마터면 반나절치 작업량이 증발할 뻔했습니다.

많은 분들이 이런 사고를 막기 위해 CLAUDE.mdAGENTS.md 같은 프롬프트 파일에 "파일을 삭제하지 마세요" 같은 지침을 적어둡니다. 하지만 뼈저리게 느낀 건, 자연어 지침은 결코 기술적인 강제성을 이길 수 없다는 사실입니다. "소프트" 규칙은 언제든 뚫릴 수 있습니다. 우리에게 필요한 건 시스템 레벨에서 막아주는 "하드" 브레이크입니다.

그래서 오늘 소개하고 싶은 도구는 바로 claude-code-safety-net이라는 플러그인입니다. 이름 그대로 Claude Code가 파괴적인 명령을 실행하기 전에 막아주는 안전망 역할을 합니다.

"그거 그냥 설정 파일(settings.json)에서 위험한 명령어 차단하면 되는 거 아닌가요?"라고 반문하실 수도 있습니다. 하지만 Claude Code의 기본 설정은 단순한 '접두사 매칭(Prefix Matching)' 방식이라 한계가 명확합니다.

예를 들어, 기본 설정으로 git checkout을 차단한다고 가정해 봅시다.

  • git checkout -b new-feature (새 브랜치 생성): 안전한 작업이지만 차단됩니다.

  • git checkout -- file.ts (작업 내용 폐기): 위험한 작업이라 차단되어야 합니다.

기본 설정은 이 둘을 구분하지 못하고 무조건 막아버리거나, 반대로 허용해버립니다. rm 명령어도 마찬가지입니다. /tmp 폴더를 지우는 건 괜찮지만, 루트 디렉터리를 지우는 건 막아야 하는데, 단순히 rm이라는 글자만 보고 판단하니 유연하지 못하죠.

반면, 이 Safety Net 플러그인은 명령어를 '의미론적(Semantic)'으로 분석합니다. 단순히 글자만 보는 게 아니라, 인자(Argument)와 플래그(Flag)를 파싱 해서 이 명령이 진짜 위험한지 판단합니다.

이 플러그인이 잡아내는 대표적인 상황들은 다음과 같습니다.

  1. 위험한 Git 작업 차단:

    • git checkout -- file: 커밋되지 않은 변경사항을 날려버리는 것을 막습니다.

    • git reset --hard: 작업 내용을 영구적으로 파괴하는 것을 막습니다.

    • git push --force: 원격 저장소의 히스토리를 덮어쓰는 것을 막습니다.

    • 반면, git checkout -bgit push --force-with-lease 같이 안전한 작업은 허용합니다.

  2. 파일 시스템 보호:

    • rm -rf / 또는 rm -rf ~: 시스템이나 홈 디렉터리 삭제를 막습니다.

    • 현재 작업 디렉터리(cwd) 밖의 파일을 삭제하는 것을 막습니다.

    • python -c 'os.system("rm -rf /")' 처럼 셸 래퍼나 인터프리터를 통해 우회하려는 시도까지 분석해서 차단합니다.

    • 반면, /tmp 같은 임시 디렉터리 삭제는 허용합니다.

설치 방법도 매우 간단합니다. Claude Code 대화창에서 아래 명령어를 입력하면 됩니다.

/plugin marketplace add kenryu42/cc-marketplace
/plugin install safety-net@cc-marketplace

설치 후에는 반드시 Claude Code를 재시작해야 적용됩니다. 이제 여러분의 AI 페어 프로그래머가 실수로 rm -rf를 시전하려고 할 때, 플러그인이 "BLOCKED" 메시지를 띄우며 단호하게 막아줄 겁니다.

물론, 가장 좋은 건 개발자가 명령어를 꼼꼼히 확인하는 습관입니다. 하지만 사람은 피곤하면 실수를 하고, AI는 가끔 엉뚱한 판단을 합니다. 자동차에 에어백이 있다고 해서 운전을 막 해도 되는 건 아니지만, 사고가 났을 때 생명을 구해주는 건 결국 에어백입니다.

생산성을 위해 AI를 도입했다면, 그에 걸맞은 안전장치도 함께 갖추는 것이 현명한 엔지니어의 자세라고 생각합니다. 저처럼 식은땀 흘리는 경험을 하기 전에, 미리 안전망을 설치해 두시기를 강력히 추천합니다.

지금 읽으신 내용, 귀사에 적용해보고 싶으신가요?

상황과 목표를 알려주시면 가능한 옵션과 현실적인 도입 경로를 제안해드립니다.