오래 걸리는 빌드나 테스트를 걸어두고 자리를 비우면, 결과를 확인하려고 다시 노트북 앞에 앉아야 했습니다. Claude Code 2.1대에 들어온 Remote Control을 쓰면 이 부분이 달라집니다. 실제로 설정해서 며칠 써본 기록입니다.

왜 필요한가

Claude Code로 작업을 시키고 나면 종종 자리를 비우게 됩니다. 테스트가 몇 분씩 걸리거나, iOS 시뮬레이터 빌드가 오래 걸리는 경우가 특히 그렇습니다. 이럴 때 진행 상황을 확인하려면 노트북 앞으로 돌아오거나, SSH로 접속하거나, 별도 모니터링 도구를 붙여야 했습니다.

Remote Control은 이 문제를 "원격 실행"이 아니라 "원격 인터페이스"로 풉니다. 코드 실행과 파일시스템 접근은 여전히 로컬 머신에서만 일어나고, 폰이나 다른 컴퓨터의 브라우저는 그 세션을 들여다보고 메시지를 주고받는 창구 역할만 합니다. 즉 로컬에 있는 MCP 서버, 환경변수, 프로젝트 설정을 그대로 쓰면서 다른 기기에서 세션을 조종할 수 있다는 뜻입니다.

설정 과정

먼저 claude.ai 계정으로 로그인이 되어 있어야 합니다. API 콘솔 키만으로는 Remote Control을 쓸 수 없습니다.

claude
# 세션 안에서
/login

프로젝트 루트에서 시작하는 것도 중요합니다. 워크스페이스 신뢰(trust) 다이얼로그는 홈 디렉토리에 대해서는 저장되지 않기 때문에, ~에서 실행하면 매번 다시 물어봅니다.

Remote Control을 켜는 방법은 세 가지입니다.

# 서버 모드: 여러 세션을 동시에 서빙 가능
claude remote-control --name "My Project"

# 인터랙티브 세션에 바로 켜기
claude --remote-control "My Project"
# 짧게는
claude --rc "My Project"

이미 실행 중인 세션이라면 슬래시 커맨드로 켤 수 있습니다.

/remote-control My Project

실행하면 터미널에 세션 URL과 QR 코드가 뜹니다. 서버 모드에서는 스페이스바로 QR 코드 표시를 토글할 수 있습니다. 이 QR을 폰의 Claude 앱(Code 탭)으로 스캔하면 바로 연결됩니다.

처음에 막혔던 부분

첫 시도에서는 claude remote-control을 실행해도 연결이 되지 않았습니다. 에러 메시지 없이 그냥 세션이 로컬에서만 도는 느낌이었는데, 원인은 쉘 프로파일에 넣어뒀던 텔레메트리 관련 환경변수였습니다.

echo $DISABLE_TELEMETRY
# 1

Remote Control은 내부적으로 기능 플래그를 조회하는데, DISABLE_TELEMETRY, DO_NOT_TRACK, DISABLE_GROWTHBOOK, CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC 중 하나라도 켜져 있으면 이 조회 자체가 막혀서 Remote Control이 동작하지 않습니다. ~/.claude/settings.json의 env 블록에도 같은 변수가 없는지 확인해야 합니다. 쉘 프로파일과 settings.json 양쪽에서 지우고 나서야 연결됐습니다.

실전 활용

빌드/테스트 모니터링

claude remote-control --name "리팩터링"으로 세션을 띄우고 작업을 지시한 뒤 자리를 비웠습니다. 폰의 Claude 앱에서 Code 탭에 들어가면 초록 점이 켜진 세션 아이콘이 보이고, 탭하면 터미널에서 보던 것과 같은 화면이 그대로 뜹니다. 도구 호출 로그, 파일 수정 내역이 실시간으로 동기화됩니다.

긴 작업에 대한 알림

턴이 일정 시간 이상 걸리면 "아직 작업 중" 알림과 함께 "폰에서 확인하기" 링크가 자동으로 뜹니다. 권한 프롬프트가 반복될 때도 비슷하게 세션 URL을 안내해줍니다. 이 안내는 세션당 몇 번만 나타나고 따로 설정할 수는 없습니다.

폰에서 사진으로 컨텍스트 전달

에뮬레이터가 아니라 실기기에서 발생한 UI 깨짐을 스크린샷으로 찍어서 폰에서 바로 첨부해봤습니다. 사진은 메시지에 그대로 포함되고, ~/.claude/uploads/에 저장되어 로컬 세션이 파일 경로로 참조할 수 있게 됩니다. 실기기 이슈를 노트북으로 옮기지 않고 그 자리에서 공유할 수 있어 편했습니다.

설정으로 항상 켜두기

매번 --remote-control을 붙이기 귀찮으면 ~/.claude/settings.json에 다음을 추가하면 됩니다.

{
  "remoteControlAtStartup": true
}

단, 프로젝트 설정(.claude/settings.json)에 true를 넣어도 무시됩니다. 저장소에 커밋된 설정으로 팀원 전체의 Remote Control을 켜버릴 수는 없게 막아둔 것으로 보입니다. 반대로 false는 프로젝트 설정에서도 적용되어, 특정 저장소에서만 끄고 싶을 때 쓸 수 있습니다.

장단점

장점

  • 로컬 환경(비밀키, MCP 서버, 프로젝트 설정)을 그대로 쓰면서 다른 기기에서 세션을 조종할 수 있음
  • 인바운드 포트를 열 필요가 없음 — 모든 트래픽이 아웃바운드 HTTPS
  • 터미널, 브라우저, 폰이 실시간으로 동기화되어 어디서 메시지를 보내도 같은 대화로 이어짐

단점

  • 로컬 프로세스가 살아있어야 함 — 터미널을 닫거나 claude를 종료하면 세션이 오프라인 상태가 됨. SSH로 붙어 있다면 tmux/screen 안에서 띄워야 연결이 끊겨도 유지됨
  • 연결 활성화 중에는 대화 트랜스크립트가 Anthropic 서버에 동기화용으로 저장됨. Zero Data Retention 같은 컴플라이언스 정책을 쓰는 조직은 아예 사용할 수 없음
  • 폰/브라우저에서는 권한 모드 중 Bypass permissions나 Auto를 선택할 수 없음 — 터미널에서만 전체 옵션이 열려 있음

마무리

Remote Control은 "로컬 실행 + 원격 인터페이스"라는 구조 덕분에 보안 걱정 없이 폰에서 세션을 들여다볼 수 있다는 점이 가장 유용했습니다. 다만 로컬 머신이 계속 켜져 있어야 하는 구조라, 정말 자리를 오래 비우는 작업이라면 결국 별도의 원격 실행 환경이 필요합니다. 자리를 잠깐 비우는 정도의 작업 — 테스트 결과 확인, 권한 승인, 진행 상황 체크 — 에는 지금 형태로도 충분했습니다.