프로젝트 목록

배포 가드

AI 코딩 에이전트가 운영 서버에 파일을 올릴 때, 직전 diff가 없으면 막고 서버본 백업은 자동으로 뜨는 훅입니다. 이 페이지 아래에서 같은 규칙으로 직접 시험해 볼 수 있습니다.

기간
2026.08 ~ 현재
고객사·환경
개인 작업 환경 (Claude Code)
역할
설계 · 개발 · 운영
기술
PythonClaude Code HooksBash
$ cp fo/coupon.php /mnt/prod/…통과 · 서버본 백업운영 경로들어 있나제자리 편집· 삭제쓰기 대상추출서버 접속확인diff 쌍· 30분차단— 무엇이 문제인지와 실행할 명령을 알려 준다판단이 필요 없는 백업은 자동으로, 판단이 필요한 diff는 막아서 사람이 보게

맡은 일

AI 코딩 에이전트(Claude Code)와 함께 고객사 운영 서버에 파일을 반영할 때 쓰는 안전장치입니다. 절차(반영 직전 diff → 서버본 백업 → 복사)는 규칙 문서에 적혀 있었지만, 최근 한 달 36건을 세어 보니 복사 직전 diff는 61%, 서버본 백업은 5%였습니다. 그래서 실행 직전에 검사하는 훅으로 바꿨습니다.

동작

  • diff 없는 복사 차단 — diff 기록은 「대상 서버 파일 + 올릴 로컬 파일」 쌍으로 남기고, 30분만 유효합니다.
  • 서버본 자동 백업 — 판단이 필요 없는 일이라 반영할 때마다 훅이 알아서 뜹니다.
  • 우회 경로 차단 — 제자리 편집(sed -i 등)과 재귀 삭제는 막고, 파일 하나 삭제는 백업한 뒤 통과시킵니다.
  • 연결 끊김 확인 — 원격 드라이브가 끊기면 서버 파일이 전부 「없는 파일」로 보여 신규 파일처럼 통과합니다. 서버 접속과 부모 폴더 응답을 확인한 뒤에만 신규 파일로 인정합니다.

까다로웠던 점

  • 직접 뚫어 보기 — 서버 파일을 바꾸는 경로 10개를 시험했더니 처음에는 8개가 통과했습니다. 하나씩 막았고, 그러다 읽기 전용 분석 스크립트까지 막던 오탐은 명령마다 맨 앞 명령어로 판정하게 바꿔 고쳤습니다.
  • 파일 이름만 보던 기록 — 처음에는 diff 기록을 파일 이름으로 남겼는데, 다른 로컬 파일을 diff한 기록이 엉뚱한 반영을 통과시켰습니다. 경로 쌍으로 바꿨습니다.

직접 해 보기

아래 시뮬레이터는 실제 훅의 판정 함수를 옮긴 것입니다. 파일 시스템·현재 시각·서버 접속 확인만 가상이고, 판정 순서와 규칙은 같습니다. 명령은 실행되지 않고 문자열로만 분석됩니다.

배포 가드 시뮬레이터

시나리오를 고르면 단계별로 명령을 보내고, 실제 훅과 같은 규칙으로 판정한 결과를 보여 줍니다. 직접 명령을 입력해도 됩니다. 작업 위치는 /work/shop입니다.