노트북은 두고 화면만 들고 다니기 — 코딩 에이전트 세션 이동의 현실#
2026-11-01

필자는 하루에도 몇 번씩 자리를 옮깁니다. 그때마다 코딩 에이전트가 돌아가는 노트북을 덮어서 들고 다니는 일이 번거로웠습니다. 처음 떠올린 해법은 단순했습니다. 작업 중인 세션을 통째로 클라우드에 올려 두고, 어디서든 이어가면 되지 않을까. 이 글은 그 질문에서 출발해 조사하고 시험해 본 기록입니다.
결론부터 적으면 이렇습니다. 작업을 다른 컴퓨터로 옮기는 것보다, 작업하는 컴퓨터는 두고 보는 화면만 옮기는 쪽이 지금은 훨씬 쉽습니다. 세션을 옮기는 길은 Claude Code와 Codex 어느 쪽도 공식적으로 열려 있지 않았고, 도커로 우회하는 길은 가능하지만 품이 많이 들었습니다. 대신 두 도구 모두 노트북에서 돌아가는 작업을 휴대폰에서 조작하는 기능을 갖추고 있었고, 그 기능을 실제로 동작시키기까지의 과정에서 몇 가지 걸림돌을 만났습니다.
1부. 세션은 왜 옮기기 어려운가#
세션을 이루는 세 가지#
“세션을 옮긴다"는 말을 풀어 보면 옮겨야 할 것이 셋입니다.
- 코드: 커밋하지 않은 수정까지 포함한 작업 트리입니다. git으로 옮길 수 있습니다.
- 대화 기록: 에이전트와 주고받은 내용과 도구 실행 내역입니다. Claude Code는 홈 디렉터리의
.claude/projects/아래에 프로젝트 폴더 경로별로 JSONL 파일을 둡니다. 긴 세션은 파일 하나가 수십 MB에 이릅니다. Codex는.codex/sessions/와 여러 개의 SQLite 데이터베이스에 나눠 저장합니다. - 로그인 정보: macOS에서는 키체인에 들어 있어서 파일로 복사할 수 없습니다.
세 가지가 서로 다른 곳에 다른 형식으로 저장되고, 옮기는 방법도 제각각입니다. 그리고 실행 중인 프로세스 자체는 어떤 방법으로도 옮겨지지 않습니다. 옮길 수 있는 것은 “멈춘 시점의 상태"뿐입니다.
공식 기능으로 되는 것과 안 되는 것#
먼저 두 도구의 공식 문서를 확인했습니다. 2026년 10월 말 기준입니다.
Claude Code에는 클라우드 세션 기능이 있습니다. claude --cloud "작업 설명"을 실행하면 클라우드 가상 머신이 현재 디렉터리의 GitHub 저장소를 현재 브랜치로 복제해서 새 세션을 시작합니다. 반대 방향의 claude --teleport는 클라우드 세션을 대화까지 포함해 터미널로 가져옵니다. 문서는 이 비대칭을 분명하게 적어 두었습니다. CLI에서 세션 핸드오프는 일방향이며, 클라우드 세션을 터미널로 가져올 수는 있지만 기존 터미널 세션을 클라우드로 보낼 수는 없다는 것입니다. 데스크톱 앱에는 세션 메뉴에 “Open in > Cloud"가 있지만, 문서에 따르면 대화는 전체 기록이 아니라 요약으로 넘어갑니다.
Codex도 구조가 비슷했습니다. codex cloud exec는 Codex Cloud에 새 작업을 제출하는 명령이고, 결과는 codex cloud apply로 변경된 코드(diff)만 로컬에 적용합니다. Claude Code의 --teleport가 대화까지 가져오는 것과 달리 코드만 돌아옵니다. Cursor에 설치한 Codex 확장에는 채팅 실행 위치를 “클라우드"로 고르는 메뉴가 있는데, 확장의 안내 문구는 “현재 코드를 포함하고 이 채팅을 참조하는 새 클라우드 채팅을 만드세요"였습니다. 지금 채팅이 옮겨가는 것이 아니라, 지금 채팅을 참조하는 새 채팅이 생기는 방식입니다. Codex 데스크톱 앱의 Handoff 기능은 같은 컴퓨터 안의 Local과 Worktree 사이, 또는 연결해 둔 다른 컴퓨터 사이에서 채팅을 옮기는 것이고, 공식 문서에는 Codex 클라우드 환경으로의 핸드오프는 지원하지 않는다고 적혀 있습니다.
| 방법 | 컴퓨터를 꺼도 되나 | 대화가 넘어가나 |
|---|---|---|
Claude Code --cloud | 됩니다 | 아니요. 새 세션입니다 |
| Claude Code 데스크톱 “Open in > Cloud” | 됩니다 | 요약만 넘어갑니다 |
Codex cloud exec | 됩니다 | 아니요. 새 작업입니다 |
| Codex 확장 “클라우드” 모드 | 됩니다 | 참조만 합니다 |
어느 쪽이든 컴퓨터를 꺼야 할 때 할 수 있는 일은 같았습니다. 작업을 WIP 커밋으로 올리고, 지금까지 한 일과 다음 할 일을 메모로 정리해서, 그 메모를 프롬프트에 넣어 새 클라우드 세션을 시작하는 것입니다. 대화 기록은 넘어가지 않으니 사람이 인수인계서를 쓰는 셈입니다.
도커로 옮기면 되지 않을까#
다음으로 떠올린 것이 도커였습니다. 로컬 환경을 도커 기반으로 만들어 두고, 옮겨야 할 때 이미지를 빌드해서 올린 뒤 다른 환경에서 받아 쓰면 이론상 같은 환경이 됩니다.
실제로 따져 보니 이미지에 담아야 할 것과 옮기고 싶은 것이 서로 달랐습니다. 이미지에 들어가는 것은 도구와 의존성, 즉 환경입니다. 그런데 옮기고 싶은 것은 코드와 대화 기록, 즉 상태입니다. 컨테이너를 통째로 이미지로 만드는 docker commit은 바인드 마운트와 볼륨을 포함하지 않습니다. 보통 코드와 에이전트 설정 디렉터리는 마운트해서 쓰기 때문에, 정작 옮기고 싶은 것이 이미지에 들어가지 않습니다. 반대로 마운트하지 않고 이미지 안에 넣으면 이번에는 로그인 토큰이 이미지에 같이 구워져서 레지스트리에 올라갑니다. Claude Code의 개발 컨테이너 문서도 설정 디렉터리에 인증 토큰과 세션 기록이 함께 들어 있다고 경고합니다.
제대로 하려면 역할을 나눠야 합니다. 이미지에는 도구만 넣고, 작업 경로를 컨테이너 안에서 고정하고, 대화 기록은 볼륨으로 두어 옮길 때 그 폴더만 복사하고, 로그인은 옮겨 간 쪽에서 환경변수로 넣는 식입니다. 경로를 고정하는 데는 숨은 장점이 하나 있습니다. Claude Code는 대화 기록을 폴더 경로별로 나눠 저장하기 때문에, 컨테이너 안 경로가 어디서나 같으면 다른 컴퓨터에서도 --resume으로 그 기록을 찾습니다.
여기까지 정리하고 나니 필자의 판단이 바뀌었습니다. 로컬과 완전히 같은 환경을 서버로 옮기는 일은 단순하지 않고, 꾸역꾸역 맞춘다 해도 예외가 생길 때마다 대응하기 어렵습니다. 그럴 바에야 처음부터 서버에 개발 환경을 두고 로컬에서는 접속만 하는 편이 낫습니다. 그런데 그러려면 노트북만큼 좋은 사양의 인스턴스를 계속 켜 두어야 하고, 비용이 문제가 됩니다. 처음 질문이었던 “자유로운 세션 이동"은 현실적으로 아직 어렵다는 결론이었습니다.
2부. 방향을 바꾸다: 컴퓨터는 두고 화면만 옮기기#
리모컨이라는 선택지#
그래서 질문을 바꿨습니다. 노트북은 자리에 켜 두고, 휴대폰이나 태블릿만 들고 다니면서 작업을 이어갈 수는 없을까.
Claude Code에는 이 상황을 위한 기능이 있었습니다. 이름은 Remote Control입니다. 세션은 노트북에서 계속 돌고, 휴대폰의 Claude 앱이나 브라우저는 그 세션을 들여다보는 창이 됩니다. 문서의 표현을 빌리면 웹과 모바일 화면은 로컬 세션을 비추는 창이라서, 컴퓨터는 켜져 있어야 하고 claude 프로세스는 계속 실행 중이어야 합니다. Claude Code가 Mac을 깨워 두지는 않으므로 Mac이 잠들면 연결도 끊깁니다. 필자는 평소에도 긴 작업을 돌릴 때 전원을 연결하고 덮개를 연 채 터미널에서 caffeinate -i를 띄워 두므로 이 조건은 이미 갖춰져 있었습니다. 덮개를 닫으면 caffeinate로도 막을 수 없습니다.
이 방식의 장점은 1부에서 부딪힌 문제가 통째로 사라진다는 것입니다. 실행이 노트북에서 일어나므로 환경을 맞출 필요가 없습니다. 브라우저 자동화 MCP 서버, 분석 도구의 인증 정보, 사용자 레벨의 스킬이 모두 그대로 쓰입니다. 노트북은 밖으로 나가는 연결만 맺고 안으로 들어오는 포트를 열지 않습니다. 대신 연결된 동안에는 대화 기록이 기기 사이의 동기화를 위해 서버에도 저장됩니다. 이 점은 문서에 명시되어 있습니다.
되게 만들기까지 걸린 것들#
문서만 보면 /remote-control을 실행하고 휴대폰에서 세션을 열면 끝입니다. 실제로는 두 군데에서 걸렸습니다.
첫째, Cursor 확장과 터미널의 메뉴가 달랐습니다. 필자는 Cursor에 설치한 Claude Code 확장을 주로 씁니다. 문서는 /config에서 “Enable Remote Control for all sessions"를 켜라고 안내하는데, 확장의 /config에는 이 항목이 없었습니다. 확장 패키지의 UI 문구를 확인해 보니 이 토글은 입력창에 /를 쳤을 때 뜨는 명령 메뉴의 Settings 칸에 따로 있었습니다. 짧은 별칭 /rc는 자동완성 목록에 나오지 않지만, 코드에는 /remote-control과 같은 명령으로 등록되어 있어서 끝까지 입력하면 동작했습니다. 확장에서는 세션에 이름을 붙이거나 QR 코드를 띄울 수 없다는 점은 문서에도 적혀 있었습니다.
둘째, 알림이 오지 않았습니다. 이 부분이 가장 오래 걸렸습니다. Cursor 확장의 /config에는 알림 스위치가 없어서 설정 파일에 알림 항목 두 개(inputNeededNotifEnabled, agentPushNotifEnabled)를 직접 켜고, 휴대폰 앱의 알림도 켜고, Remote Control이 연결된 세션에서 1분 뒤에 알림을 보내 달라고 요청한 뒤 화면을 잠갔습니다. Claude Code 쪽에서는 “휴대폰 알림을 요청했다"는 응답이 돌아왔는데 휴대폰은 조용했습니다.
원인은 설정이 두 곳에 있다는 것이었습니다. 알림 설정은 내 컴퓨터의 설정 파일에도 저장되지만, 실제로 휴대폰에 알림을 보내는 서버에도 따로 저장됩니다. Claude Code가 그 설정을 어떻게 읽고 쓰는지 실행 파일을 살펴보고, 같은 경로로 서버에 저장된 값을 조회해 보니 휴대폰 등록은 정상이었고(안드로이드 기기 하나, 당일 갱신), 두 알림의 서버 값은 비어 있어서 “끔"으로 처리되고 있었습니다. 터미널 /config의 “Push when actions required"와 “Push when Claude decides” 스위치가 바로 이 서버 값을 바꾸는 자리인데, 설정 파일만 직접 고쳐서는 서버까지 전달되지 않았던 것입니다. 서버 쪽 값을 켠 뒤 같은 테스트를 반복하니 휴대폰에 알림이 도착했습니다.
여기서 하나 덧붙여야 할 것이 있습니다. 알림은 사용자가 Mac 앞에 있으면 보내지 않습니다. 첫 번째 테스트에서 Claude Code는 “이 터미널이 활성 상태라 알림을 건너뛴다"고 응답했습니다. 알림 테스트를 하려면 요청을 보내자마자 화면에서 떠나야 합니다. 이 동작은 고장이 아니라 설계입니다.
휴대폰에서 실제로 쓰는 모습#
연결이 되고 나면 휴대폰 Claude 앱의 Code 탭에 컴퓨터 아이콘과 초록 점이 붙은 세션이 보입니다. 거기서 메시지를 보내고, 권한 요청을 승인하고, 변경된 코드(diff)를 확인하고, 사진을 첨부할 수 있습니다. 터미널과 같은 대화가 실시간으로 맞춰지므로 자리에 돌아오면 터미널에서 바로 이어 쓸 수 있습니다. 작업이 끝나거나 승인이 필요하면 휴대폰으로 알림이 옵니다.
다만 모바일에서 되지 않는 것도 있습니다. /plugin, /resume처럼 터미널 화면에서만 동작하는 명령은 로컬에서만 쓸 수 있습니다. 서버 모드(claude remote-control --spawn worktree)로 띄워 두면 휴대폰에서 새 세션을 열 때마다 git worktree가 따로 만들어져 여러 작업이 같은 파일을 건드리지 않는데, 이 서버 모드는 CLI 전용이라 확장에서는 쓸 수 없습니다.
3부. Codex는 어떻게 다른가#
Claude Code 쪽이 정리된 뒤 Codex도 같은 일을 해 보았습니다. 결론은 “비슷한 기능이 있지만 연결하는 단위와 켜는 곳이 다르다"였습니다.
Claude Code의 Remote Control은 대화 하나를 연결합니다. /remote-control을 실행한 그 세션만 휴대폰에서 보입니다. Codex의 Remote Control은 컴퓨터를 연결합니다. 한 번 연결해 두면 휴대폰에서 그 컴퓨터에 있는 프로젝트 아무것이나 열어 새 채팅을 시작하거나 기존 채팅을 이어갈 수 있습니다. 설정도 터미널이 아니라 ChatGPT 데스크톱 앱에서 합니다. Settings > Connections > “Control this Mac or PC"에서 설정을 시작하면 QR 코드가 뜨고, 이것을 휴대폰으로 찍으면 됩니다.
여기서 잠깐 헤맸습니다. ChatGPT 앱 안에서 스캔 메뉴를 찾았는데 없었습니다. 공식 문서를 다시 읽어 보니 “코드를 찍으면 ChatGPT 앱이 열리면서 연결을 마무리한다"고 되어 있었습니다. QR 안에 앱을 여는 링크가 들어 있는 방식이라 휴대폰의 기본 카메라로 찍으면 됩니다. 같은 계정, 같은 워크스페이스로 로그인되어 있어야 하고, 연결이 끝나면 ChatGPT 앱의 Codex 탭에 이 Mac이 나타납니다. 필자는 여기까지 연결하고 휴대폰에서 질의를 보내 답이 돌아오는 것까지 확인했습니다.
Claude Code에서는 바깥에서 챙겨야 했던 두 가지가 Codex에서는 앱 설정에 들어 있었습니다. 컴퓨터를 깨어 있게 유지하는 옵션이 Connections 설정에 있어서 caffeinate를 따로 띄울 필요가 없고, 작업이 끝나거나 승인이 필요할 때의 휴대폰 알림은 기본으로 제공됩니다. 대신 Codex도 Mac이 잠들면 연결이 끊기고, 덮개를 닫으려면 외부 모니터가 있어야 한다는 조건은 같습니다. 끄는 것은 같은 Connections 설정에서 Remote Control을 끄면 되고, 휴대폰과의 짝은 남아 있어서 다시 켜면 QR 없이 바로 보입니다.
| Claude Code | Codex | |
|---|---|---|
| 연결 단위 | 대화 하나 | 컴퓨터 전체 |
| 켜는 곳 | 터미널·편집기 확장 | ChatGPT 데스크톱 앱 |
| 휴대폰 앱 | Claude 앱 → Code 탭 | ChatGPT 앱 → Codex 탭 |
| 알림 | 설정 두 곳을 켜야 함 | 기본 제공 |
Codex의 터미널에도 codex remote-control start와 pair 명령이 있지만, 도움말에 실험 기능으로 표시되어 있고 공식 문서에는 설명이 없습니다. 이 글에서는 시험하지 않았습니다.
맺으며#
처음 질문은 “작업 중인 세션을 클라우드로 옮길 수 있는가"였습니다. 답은 “지금은 아니다"였습니다. 세션을 이루는 코드, 대화 기록, 로그인 정보가 서로 다른 곳에 있고, 두 도구 모두 로컬에서 클라우드로 가는 길은 열어 두지 않았습니다. 도커로 우회하는 길은 환경과 상태를 분리하면 가능하지만, 그 품을 들일 바에야 서버에 환경을 두는 편이 낫고, 그러면 비용이 따라옵니다.
대신 두 도구 모두 “옮기기"가 아니라 “들여다보기"를 먼저 풀어 두었습니다. 노트북은 자리에 두고 휴대폰은 창으로 쓰는 방식입니다. 이 방식은 환경을 맞출 필요가 없다는 점에서 옮기기보다 훨씬 쉬웠지만, 실제로 동작시키기까지는 메뉴 위치, 전원 설정, 서버 쪽 알림 스위치처럼 문서에 다 적혀 있지 않은 걸림돌이 있었습니다.
노트북을 아예 꺼야 하는 날은 여전히 남아 있습니다. 그날은 1부에서 정리한 대로 커밋하고, 인수인계 메모를 쓰고, 새 세션을 시작하는 수밖에 없습니다. 그 인수인계 메모를 에이전트에게 쓰게 하고 다음 세션이 읽게 하는 흐름은 따로 정리해 볼 생각입니다.
부록: Remote Control 전 점검 목록#
Claude Code 쪽입니다.
# 지금 대화를 휴대폰에서 이어가기 (Cursor 확장, 터미널 공통)
/remote-control
# 새 대화마다 자동 연결 (확장: 명령 메뉴 Settings 칸 / 터미널: /config)
Enable Remote Control for all sessions
# 휴대폰 알림 (터미널 /config, "Local notifications" 아랫줄)
Push when actions required
Push when Claude decides# Mac이 잠들지 않게 (전원 연결, 덮개 열어 둔 상태)
caffeinate -i
# 휴대폰에서 새 작업을 여러 개 띄우려면 (CLI 전용)
caffeinate -i claude remote-control --spawn worktree알림 테스트는 Remote Control이 연결된 대화에서 “1분 뒤에 알림을 보내 줘"라고 요청한 뒤 곧바로 화면을 잠그면 됩니다. 화면 앞에 있으면 알림을 건너뜁니다. 알림이 끝내 오지 않으면 설정 파일이 아니라 터미널 /config의 두 스위치를 직접 껐다 켜서 서버 쪽 값을 맞춥니다.
Codex 쪽입니다.
# ChatGPT 데스크톱 앱
Settings > Connections > Control this Mac or PC > Set up
→ 화면의 QR 코드를 휴대폰 기본 카메라로 촬영
→ ChatGPT 앱이 열리면 같은 계정·워크스페이스 확인 후 승인
→ 같은 화면에서 "컴퓨터 깨어 있게 유지" 켜기
# 끄기
Settings > Connections > Remote Control 끄기이 글에서 확인한 버전은 Claude Code 2.1.316(터미널)과 2.1.314(Cursor 확장), Codex CLI 0.166.0, ChatGPT 데스크톱 앱 26.1016입니다.
참고 자료#
- Claude Code — Continue local sessions from any device with Remote Control
- Claude Code — Use Claude Code in the cloud
- Claude Code — Development containers
- Claude Code — Desktop app
- Codex — Remote connections
- Codex — Codex on mobile
- Codex — Run coding tasks in the cloud
- Codex — Worktrees (Handoff)
- Docker — Docker Sandboxes: Run Claude Code and Other Coding Agents Unsupervised (but Safely)