tmux에서 Claude Code 드래그 복사가 안 될 때 — OSC 52와 allow-passthrough
SSH로 원격 서버에 붙어 tmux 세션에서 Claude Code(또는 다른 TUI)를 쓰다 보면 이런 경험을 한다. 출력된 텍스트를 마우스로 드래그하면 화면 하단에 이런 알림이 뜬다.
sent 196 chars via OSC 52 · check terminal clipboard settings if paste fails
그런데 막상 로컬 머신에 붙여넣으면 클립보드가 비어 있다. 터미널을 Windows Terminal, VSCode 통합 터미널, Warp로 바꿔봐도 똑같다. 터미널 엔진 문제인가 싶지만 — 아니다. 범인은 tmux의 allow-passthrough 설정이었다.
이 글은 이 문제를 단계적으로 좁혀나간 디버깅 과정과 최종 해결책을 정리한다.
한 줄 해결: 원격 쉘은 되는데 tmux 안의 TUI에서만 복사가 안 된다면,
~/.tmux.conf에set -g allow-passthrough on을 추가하라. Claude Code 같은 TUI의 DCS 패스스루 복사는 이 한 줄이면 동작한다. (set-clipboard on은 일반 쉘의 raw OSC 52 복사에 필요한 별도 옵션이니 함께 켜두면 좋다.) 원인과 검증 과정이 궁금하면 아래 1~3단계를, 바로 점검만 하고 싶으면 맨 아래 디버깅 체크리스트로 가면 된다.

OSC 52란 무엇인가?
OSC 52는 터미널 이스케이프 시퀀스의 하나로, 원격 호스트의 프로그램이 로컬 터미널의 시스템 클립보드에 직접 쓸 수 있게 해주는 메커니즘이다. SSH로 접속한 원격 서버에서 xclip이나 pbcopy가 동작하지 않아도, OSC 52를 지원하는 터미널이라면 클립보드 복사가 가능하다.
형식은 단순하다.
ESC ] 52 ; c ; <base64로 인코딩된 텍스트> BEL
52— OSC 52 식별자c— 대상 클립보드 (c=CLIPBOARD,p=PRIMARY)- base64 페이로드
BEL(a) 또는ST(ESC)로 종결
쉘에서 직접 쏘면 이렇게 된다.
printf '