목록으로 돌아가기

블로그

휴먼 인 더 루프: Tactic Remote의 승인 시스템이 개발자에게 제어권을 보장하는 방법

Tactic Remote의 승인 시스템은 hook을 통해 Claude Code의 도구 호출을 가로채고, 이를 푸시 알림으로 iPhone에 전달하며, 각 작업을 명시적으로 승인하거나 거부할 때까지 실행을 차단합니다.

게시일 태그: security / approvals / architecture / ai-safety
블로그

이 카테고리의 제품 및 엔지니어링 업데이트를 확인하세요.

카테고리 보기

AI 코딩 에이전트는 강력하지만, 감독 없는 힘은 위험 요소입니다. Tactic Remote는 개발자가 자신의 개발 환경에서 AI 에이전트가 수행하는 모든 중요한 작업을 승인해야 한다는 하나의 신념을 중심으로 구축되었습니다. 오늘은 승인 시스템의 작동 방식, 지연 시간에 미치는 영향, 그리고 향후 계획에 대해 상세히 공개합니다.

승인이 중요한 이유

Claude Code는 파일 읽기, 파일 쓰기, shell 명령 실행, 외부 서비스와의 상호 작용이 가능합니다. 이러한 각 작업에는 실질적인 결과가 따릅니다. 잘못 해석된 프롬프트는 파일 삭제, 잘못된 git 작업, 의도하지 않은 API 호출로 이어질 수 있습니다.

Anthropic은 Claude Code에 터미널에서 사용자에게 승인을 요청하는 권한 시스템을 구축했습니다. 그러나 Mac에서 떨어져 있을 때 — 출퇴근 중, 회의 중, 또는 단순히 다른 방에 있을 때 — 이러한 프롬프트는 실행을 무기한 차단합니다. 에이전트는 대기 상태로 멈춰 있게 됩니다.

Tactic Remote는 모든 승인 프롬프트를 실시간으로 iPhone에 전달하여 이 문제를 해결합니다. 제안된 작업을 검토하고, 전체 컨텍스트를 확인한 후, 탭하여 승인하거나 거부할 수 있습니다. 에이전트는 즉시 재개됩니다. Mac으로 전환할 필요가 없습니다.

아키텍처: Hook과 인터셉션

승인 시스템은 Claude Code의 hook 메커니즘 위에 구축되었습니다. Claude Code가 도구 호출을 실행하려 할 때 — 파일 쓰기, shell 명령, 또는 권한이 필요한 기타 작업 — Tactic Remote Mac 컴패니언이 실행 전에 이벤트를 가로챕니다.

전체 흐름은 다음과 같습니다:

  1. Claude Code가 도구 호출을 시작합니다. 예를 들어, 프로젝트 디렉토리에서 rm -rf node_modules && npm install을 실행하려 합니다.
  2. Hook이 실행됩니다. Tactic Remote의 hook 스크립트가 도구 이름, 인수, 제안된 작업의 전체 컨텍스트를 캡처합니다. 이는 동기적으로 발생하며, Claude Code는 hook의 반환을 기다리며 일시 중지됩니다.
  3. Mac 컴패니언이 작업을 평가합니다. 구성된 자동 승인 규칙에 대해 작업을 확인합니다. 작업이 규칙에 일치하면(예: 읽기 전용 파일 작업), iPhone을 거치지 않고 즉시 승인을 반환합니다.
  4. 수동 승인이 필요하면 푸시 알림이 전송됩니다. 알림에는 작업 유형, Claude가 수행하려는 작업의 요약, 판단에 충분한 컨텍스트가 포함됩니다.
  5. iPhone 앱이 승인 요청을 표시합니다. 전체 명령 또는 파일 차이점, 작업 디렉토리, 이 작업으로 이어진 대화 컨텍스트를 볼 수 있습니다.
  6. 승인하거나 거부합니다. 응답은 WebSocket을 통해 Mac 컴패니언으로 전달되고, 결과가 hook에 반환되며, Claude Code의 차단이 해제됩니다.

Claude Code 관점에서 전체 체인은 동기적입니다. hook을 호출하고 응답을 받았을 뿐입니다. 승인이 다른 네트워크의 휴대전화를 통해 라우팅되었다는 것을 인식하지 못합니다.

iPhone에서 보이는 화면

승인 화면은 신속하고 정보에 기반한 의사결정을 위해 설계되었습니다. 각 요청은 다음을 표시합니다:

  • 작업 유형 — 파일 쓰기, shell 명령, API 호출 또는 기타 도구 호출.
  • 전체 페이로드 — 실행될 정확한 명령 또는 작성될 정확한 내용. shell 명령은 요약되거나 잘리지 않습니다. 파일 차이점은 변경되는 특정 행을 보여줍니다.
  • 작업 디렉토리 — 작업이 실행될 위치로, 영향 범위를 평가할 수 있습니다.
  • 대화 발췌 — Claude가 이 작업을 제안하게 된 최근 대화 내용으로, 요청의 "이유"를 파악할 수 있습니다.
  • 세션 메타데이터 — 어떤 tmux 세션인지, 실행 시간, 이 세션에서 이미 승인된 작업 수.

승인, 거부, 또는 Claude Code에 피드백으로 전달되는 메시지와 함께 거부할 수 있습니다.

성능: 승인 속도는?

모든 연결 모드에서 승인 왕복 시간을 추적합니다. 이 수치는 Claude Code의 hook이 실행된 시점부터 승인 응답을 받고 실행이 재개될 때까지의 시간을 나타냅니다.

시나리오중앙값P95
로컬 네트워크, 앱 포그라운드85ms + 사람 시간140ms + 사람 시간
로컬 네트워크, 앱 백그라운드 (푸시 알림)1.2s + 사람 시간2.8s + 사람 시간
Cloudflare Tunnel, 앱 포그라운드280ms + 사람 시간450ms + 사람 시간
Cloudflare Tunnel, 앱 백그라운드1.8s + 사람 시간3.5s + 사람 시간

"사람 시간"이 지배적인 요소입니다. 실제로 대부분의 개발자는 세션을 적극적으로 모니터링할 때 3-8초 이내에 승인 요청에 응답합니다. 시스템 오버헤드는 의사결정 시간에 비해 무시할 수 있는 수준입니다.

중요한 점은 자동 승인 규칙에 일치하는 작업에 대해 승인 시스템이 오버헤드를 전혀 추가하지 않는다는 것입니다. 이러한 작업은 iPhone을 완전히 우회하며 Mac에서 5ms 미만으로 처리됩니다.

자동 승인 정책

모든 작업에 수동 검토가 필요한 것은 아닙니다. 파일 읽기는 일반적으로 안전합니다. linter 실행은 위험도가 낮습니다. Tactic Remote는 어떤 작업이 iPhone을 건너뛰고 자동으로 진행될지 정의할 수 있는 구성 가능한 자동 승인 정책을 지원합니다.

현재 정책 옵션:

  • 읽기 전용 파일 작업 — cat, read, 파일 목록 조회 등 변경을 수반하지 않는 작업.
  • 특정 명령 접두사 — 예를 들어, npm test 또는 cargo check로 시작하는 모든 명령을 자동 승인.
  • 디렉토리 범위 지정 — 특정 디렉토리 내의 모든 작업을 자동 승인 (스크래치 또는 테스트 디렉토리에 유용).
  • 도구 유형 화이트리스트 — 특정 도구 카테고리의 모든 작업을 승인.

정책은 Mac 컴패니언에서 구성되며, 가시성을 위해 iPhone 앱에 동기화됩니다. 세션 뷰에서 활성화된 정책을 확인하고 일시적으로 재정의할 수 있습니다(예: 프로덕션 배포 시 "모든 작업 수동 승인"으로 전환).

피드백과 함께 거부

작업을 거부할 때 선택적으로 메시지를 포함할 수 있습니다. 이 메시지는 사용자가 터미널에서 직접 입력한 것처럼 Claude Code에 반환됩니다. Claude Code는 이를 가이드로 삼아 접근 방식을 조정합니다.

예를 들어, Claude가 설정 파일 삭제를 제안하고 당신이 "해당 파일을 삭제하지 마세요. git에 포함되지 않은 로컬 오버라이드가 들어 있습니다"라고 거부하면, Claude는 피드백을 수용하고 대안을 찾습니다. 같은 기기 앞에 있지 않더라도 개발자와 에이전트 사이에 진정한 피드백 루프가 형성됩니다.

신뢰성 보장

승인 시스템은 안전하게 실패하도록 설계되었습니다:

  • 승인 중 WebSocket 연결이 끊어지면, hook이 타임아웃되어 거부를 반환합니다. Claude Code는 "권한 거부" 결과를 받고 작업을 중단합니다.
  • iPhone에 연결할 수 없으면 (네트워크 없음, 전원 꺼짐), 대기 중인 승인은 Mac 컴패니언에서 최대 10분간 큐에 저장됩니다. 해당 시간 내에 휴대전화가 다시 연결되면 큐에 저장된 승인이 전달됩니다. 타임아웃 후에는 자동으로 거부됩니다.
  • Mac 컴패니언이 크래시하면, hook 스크립트가 프로세스 부재를 감지하고 거부를 반환합니다. 명시적인 승인 없이 Claude Code는 진행할 수 없습니다.

기본 동작은 항상 거부입니다. 시스템은 진행하기 위해 명시적인 승인을 필요로 합니다. 연결 끊김이나 프로세스 크래시로 인해 검토되지 않은 작업이 실행되는 상태는 존재하지 않습니다.

향후 계획

승인 시스템에 대한 여러 가지 개선을 진행 중입니다:

세분화된 정책 빌더. 구성 파일을 편집하지 않고 자동 승인 정책을 구성할 수 있는 iPhone 앱의 시각적 인터페이스. 불리언 로직을 사용한 드래그 앤 드롭 규칙: "git status 또는 git diff에 일치하지만 git push에는 일치하지 않는 shell 명령을 자동 승인".

세션 범위 신뢰 에스컬레이션. 특정 세션에 대해 일시적으로 신뢰 수준을 높이는 기능. 예를 들어, 대규모 리팩토링 작업을 적극적으로 감독하면서 각 파일을 개별적으로 승인하고 싶지 않을 때 "앞으로 15분간 이 세션의 모든 파일 쓰기를 자동 승인".

승인 분석. 시간에 따른 승인 패턴을 보여주는 대시보드 — 가장 많이 승인하는 작업, 가장 많이 거부하는 작업, 이력에 기반한 자동 승인 정책 제안.

일괄 승인. Claude Code가 일련의 관련 작업을 제안할 때(예: 단일 기능의 일부로 5개 파일 쓰기), 이를 일괄로 검토하고 전체 세트를 승인하거나 거부하는 옵션.

승인 시스템은 Tactic Remote를 실제 개발 작업에 사용할 수 있게 만드는 핵심입니다. 자율적인 AI 에이전트는 유용하지만, 인간의 감독이 있는 자율적인 AI 에이전트야말로 신뢰할 수 있습니다. 이 차이는 중요하며, 우리는 이 분야에 대한 투자를 계속할 것입니다.

Tactic Remote 사용해 보기

휴대전화로 코딩 에이전트를 원격 제어하세요

Mac, Windows, Linux 컴퓨터의 Claude Code, Codex 등에 연결하세요. iPhone이나 iPad에서 진행 상황을 확인하고 다음 요청을 보낼 수 있습니다.