Cách kết nối session Claude Code đang chạy trên PC (SSH vào server local) sang app Claude Code mobile bằng Remote Control, thay vì dùng dispatch/sandbox. Phân biệt dispatch vs remote control, cách setup, và các blocker thường gặp (version, ANTHROPIC_BASE_URL proxy, egress LAN-only chặn api.anthropic.com).

Vấn đề & flow đã kiểm chứng

Bối cảnh vấn đề

  • Chạy Claude Code trên PC, SSH vào server theo IP local để làm việc → file tạo ra nằm trên server.

  • Muốn tiếp tục code từ điện thoại (app Claude Code mobile).

  • Dispatch không giải quyết được: dispatch chạy trên VM sandbox cloud của Anthropic, chỉ thấy repo được push (GitHub), không có route mạng vào LAN nội bộ → không đụng tới file trên server, không dùng được SSH connection của PC.

  • Tạo task mới trực tiếp trên mobile cũng là dispatch-style sandbox → không có SSH ra ngoài kể cả public IP.

Giải pháp đúng: Remote Control (không phải dispatch)

Remote Control kết nối app Claude (iOS/Android) hoặc claude.ai/code tới một session Claude Code đang chạy sẵn trên máy bạn. Session vẫn chạy local trên máy đó → giữ nguyên filesystem, MCP, tools, config, và SSH connection. Điện thoại chỉ "điều khiển từ xa", không có gì chạy trên cloud.

Flow đã kiểm chứng

  1. Trong session Claude Code đang mở trên PC, gõ /remote-control (hoặc /rc). Lịch sử hội thoại hiện tại được carry-over; hiện ra URL + QR.

  2. Trên app Claude mobile → mục Code → một card session mới hiện ra ở trạng thái chờ, bấm connect (hoặc quét QR).

  3. Sau khi connect → đồng bộ, điều khiển session PC từ điện thoại. Card hiển thị icon máy tính + chấm xanh Connected khi online.

Đã xác nhận thực tế: trong app Code, session hiện trạng thái Connected / Disconnected gắn với repo (vd 0toX/t4f-me). Các task dispatch cũ hiện icon cloud, khác hẳn session Remote Control (icon máy tính).

Yêu cầu & lưu ý

  • Claude Code v2.1.51 trở lên.

  • Có trên mọi plan: Pro, Max, Team, Enterprise. Không hỗ trợ đăng nhập bằng API key — phải dùng OAuth claude.ai.

  • Session sống theo tiến trình claude trên máy: đóng terminal / thoát VS Code / kill process → session kết thúc. PC phải bật.

Các blocker khiến /remote-control không hiện khi gõ /

Xếp theo khả năng cao nhất trong môi trường có VM egress LAN-only:

  1. ANTHROPIC_BASE_URL trỏ sang proxy/gateway. Từ v2.1.196, Remote Control bị vô hiệu khi biến này trỏ tới host khác api.anthropic.com (LLM gateway/proxy). Phải unset. Cũng không chạy trên Amazon Bedrock, Google Vertex AI, Microsoft Foundry.

  2. Version cũ hơn 2.1.51. Kiểm tra claude --version.

  3. Đang đăng nhập bằng API key thay vì OAuth claude.ai. Unset ANTHROPIC_API_KEY rồi /login.

Điểm kiến trúc quan trọng

Remote Control phải chạy trên chính máy đang chạy tiến trình claude:

  • Nếu chạy claude trên PC rồi PC dùng SSH sang server → gõ /remote-control trên PC là ổn; điện thoại điều khiển session PC nên vẫn với tay sang server được.

  • Nếu SSH vào server rồi chạy claude trên chính server (egress LAN-only chặn api.anthropic.com) → Remote Control sẽ fail vì không gọi được API Anthropic từ server.


Trải nghiệm thật + điểm mâu thuẫn với docs

Trải nghiệm thật trên setup của tôi

1. Cách chạy claude: Trên PC lập trình, cấu hình SSH config trỏ tới server, sau đó chọn mode SSH ngay trong Claude Code (không SSH thủ công ra ngoài rồi mới mở claude) — tức là claude tự quản lý kết nối SSH tới server, còn tiến trình claude vẫn chạy trên PC. Đây là lý do Remote Control hoạt động: process claude nằm trên PC nên vẫn gọi được api.anthropic.com bình thường, SSH tới server chỉ là một "kênh" claude dùng, không phải claude chạy trên server.

2. Version: v1.17377.2 · win32 10.0.26200

3. Về API key — mâu thuẫn với docs: Trước đó tôi login bằng API key (lấy trực tiếp từ dashboard API của Claude, dán đại vào). /remote-control vẫn tự dưng xuất hiện và dùng được — không đúng với thông tin docs nói API key sẽ chặn Remote Control (cần OAuth claude.ai). ⚠️ Cần ghi rõ trong bài đây là quan sát thực tế của tôi, khác với tài liệu chính thức — không khẳng định thay Anthropic, chỉ nêu hiện tượng.

4. Đồng bộ & hạn chế thực tế:

  • Độ trễ gần như không có.

  • Hạn chế lớn nhất: trong session mobile không xem được file .md / doc trực tiếp, dù Claude "tải file vào chat" ở giao diện. Phải copy-paste nội dung file thẳng vào chat mới đọc được.

  • Đã thử workaround bằng cách xem qua code diff thay vì mở file — nhưng không hiệu quả lắm, vẫn bất tiện.

5. Giữ session sống: Bắt buộc phải giữ Claude Code session luôn mở trên PC thì Remote Control mới có tác dụng, vì nó tương tác trực tiếp với server deploy qua session đó — tắt/đóng là mất kết nối, chưa có cách nào giữ bền hơn (chưa thử tmux/background service).

6. Plan: Đang dùng Pro plan ($20/tháng).

Ghi chú biên tập

Điểm 3 là chỗ đáng chú ý nhất của bài — vì nó cho thấy hành vi thực tế có thể khác tài liệu chính thức (docs nói cần OAuth, nhưng API key vẫn chạy được). Khi viết, nên đóng khung là "quan sát cá nhân, chưa rõ do version khác hay do thay đổi hành vi gần đây", tránh khẳng định chắc nịch thay Anthropic.