Claude Media
Claude CodeのRStudio Serverターミナルでコピーできない原因と回避

Claude CodeのRStudio Serverターミナルでコピーできない原因と回避

RStudio Serverのブラウザターミナルでフルスクリーン描画を選ぶと、マウス選択が自動コピーされません。issue #91125の報告をもとに、症状の切り分けと /tui defaultなどの回避をまとめます。

RStudio Serverのブラウザ上のターミナルでClaude Codeを起動し、起動時に出るフルスクリーン描画の案内に同意すると、マウスで選んだ文字がクリップボードに入らなくなることがあります。選択のハイライトは出るのに、貼り付けると何も出ません。

GitHubのissue #91125に報告があり、状態はopenです。報告時のバージョンは2.1.252で、Chrome(macOS)からRStudio Serverのターミナルを使った環境です。

何が起きているか

報告された症状は3つです。

  • 選択のハイライトは表示される
  • 自動コピーされず、貼り付け先に何も出ない
  • Cmd+Cでもコピーできない

フルスクリーン描画の起動時に表示される「選択したテキストは自動でクリップボードにコピーされる」という説明どおりには動きません。報告者は、/tuiでクラシックな描画に戻すと選択とコピーが元どおり使えると書いています。

数字

issue #91125の環境

  • Claude Code

    2.1.252

    フルスクリーン描画を有効化

  • 端末

    xterm.jsのWeb端末

    RStudio Serverのターミナル

  • ブラウザ

    Chrome

    macOSから接続

報告者の記載どおり

原因はどこまで分かっているか

原因は特定されていません。報告者自身も「ブラウザのクリップボードAPIの制限に関係するかもしれない」と推測を書くにとどまります。

手がかりになるのは、同じissueのコメントに載った別環境の報告です。ブラウザ版のVS Code(vscode.dev)でリモートのヘッドレスLinuxコンテナに接続した例で、次の状況が書かれています。

  • 内蔵ターミナルはWebSocketでつないだPTYを使うxterm.js
  • pbcopy・xclip・xsel・wl-copyのどれも入っていない
  • DISPLAYとWAYLAND_DISPLAYが未設定
  • OSC 52は出力されるが、Web IDE側が処理しない

OSC 52は、端末にクリップボードへの書き込みを頼むエスケープシーケンスです。このコメントでは、ブラウザ版VS Code側のissueとして2件(microsoft/vscode#318254、#334287)が挙げられています。

製品のドキュメントを重ねると、筋道は次のように描けます。ローカルのセッションでは、macOSならpbcopy、LinuxならWaylandのwl-copyか、X11のxclip・xselのどれか、WindowsならSet-Clipboardでクリップボードに書きます。SSH越しのときだけOSC 52に切り替えます。

RStudio Serverでは、Claude Codeが動くのはサーバー側のLinuxで、手元のブラウザではありません。サーバーにクリップボード用のコマンドも画面もなければ、頼れるのはOSC 52だけになります。ただしRStudio Serverのターミナルが実際にOSC 52を受け付けるかどうかは、issueにも製品のドキュメントにも書かれていません。ここまでは推測を含む整理で、確定した原因ではありません。

会話

「サーバー側のコマンドが無いから」は本当か

  1. 後輩

    じゃあサーバーにxclipを入れれば直るんですか。

  2. 先輩

    直る保証はありません。xclipが書くのはサーバー側のX11クリップボードで、手元のブラウザのクリップボードとは別物です。リモートデスクトップのように共有される仕組みがなければ、手元には届きません。

  3. 後輩

    つまり、手元に届く経路はブラウザが許す書き込みだけ。

  4. 先輩

    そう考えるのが筋です。ただし、どちらの経路が詰まっているかは、issueの報告からは切り分けられていません。

回避の選択肢

issue本文に書かれた回避は、クラシックな描画に戻す方法だけです。それ以外は製品のドキュメントに載っている設定から選べるものを並べます。RStudio Serverで効いたという報告があるのは/tui defaultだけで、残りは試して確かめる候補です。

クラシックな描画に戻す

報告者が実際に試して効いたのがこれです。Claude Codeの中で次を実行します。

/tui default

/tui defaultはtui設定を"default"に保存します。ドキュメントによると、クラシックな描画では会話がターミナル本来のスクロールバックに残り、選択はブラウザ側の端末が受け持ちます。引き換えに、フルスクリーンのちらつきの少なさと、長い会話でのメモリの安定は手放します。

現在の描画は、引数なしの/tuiで確かめられます。環境変数でフルスクリーンを強制している場合は、/tuiコマンドがCLAUDE_CODE_NO_FLICKERを外した状態で再起動するので、設定が反映されます。

フルスクリーンのままマウス追跡だけ切る

CLAUDE_CODE_DISABLE_MOUSE=1は、フルスクリーン描画でのマウス追跡を止める環境変数です。ターミナル本来のコピー操作を使いたいときの用途として、環境変数の一覧に挙がっています。

CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude

選択をブラウザ側の端末が受け持つので、報告された症状の入り口(アプリ内の選択)を避けられます。代わりにクリックでの位置指定、クリックでの展開、URLのクリック、アプリ内のホイールスクロールは使えなくなります。PgUpとPgDnによるキーボードスクロールは残ります。

試すときは、実際にコピーできるかを貼り付けて確かめてください。

自動コピーを切って手動コピーにする

copyOnSelectをfalseにすると、選択してもクリップボードは変わらなくなります。/configの「Copy on select」からも切り替えられます。このキーはグローバル設定(~/.claude.json)の項目です。

{
  "copyOnSelect": false
}

コピーしたいときはCtrl+Shift+cで行います。ただし、この症状は自動コピーの経路が書き込めていないというものなので、手動コピーが同じ経路を通るなら同じように失敗する可能性があります。

Shiftを押したまま選ぶ

ドキュメントには、1回だけ端末本来の選択を使いたいときの方法があります。クリック&ドラッグの間、Shiftを押し続けます(VS Codeとその系統では、macOSでOptionを使う場合があります)。

ブラウザ版VS Codeの報告では、より具体的な手順が書かれています。Shiftを押しながら選択し、マウスボタンを離す前に右クリックして「Copy」を選ぶ、というものです。症状が似ているので、試す順としては低コストです。

くらべる

回避の違い

報告者が効果を確認

/tui default

フルスクリーンをやめる。ちらつきの少なさは失うが、選択とコピーはブラウザ側の端末に任せられる。

RStudioでの報告なし

DISABLE_MOUSE=1

フルスクリーンは維持。クリック操作とアプリ内ホイールスクロールを失う。

切り分け: 自分の環境の症状か

切り分け

コピーできないときの切り分け

  1. QClaude Codeはフルスクリーン描画で動いていますか?
    答えがいいえのとき

    この記事の症状とは別です。/tuiで現在の描画を確かめてください。クラシック描画で選択できないなら、ブラウザやRStudio側の設定を疑います。

    答えがはい
  2. Q/tui defaultに切り替えると、選択してコピーできますか?
    答えがいいえのとき

    フルスクリーンとは別の原因です。端末のコピー自体がブラウザに許可されているか、別のタブやウィンドウで確かめます。

    答えがはい
  3. Q`Shift`を押したまま選択して右クリックでコピーできますか?
    答えができない

    端末側のコピー自体が塞がれている可能性があります。ブラウザのクリップボード権限を見直します。

    答えがはい

報告された症状と一致します

フルスクリーンでだけコピーできず、クラシックなら使えるなら、issue #91125と同じ型です。/tui defaultか、上のマウス追跡の無効化を選びます。

次の更新で変わるか

issueはopenで、報告者が期待する動きは2つ書かれています。コピーが広告どおり動くか、ブラウザ型の端末と合わない場合はフルスクリーンの描画を提案しないか、のどちらかです。修正の予定は書かれていないため、直るまでは上の回避を使うことになります。

同じ型の症状は、リモートデスクトップ越しのWindowsでも報告されています。原因が違う話なので、RDPでクリップボードが空になる件も合わせて読むと、どの経路で書き込んでいるかの見分けがつきます。SSH越しで貼り付けが空になるときの整理は、Claude Codeのcopyコマンドの使い方にあります。フルスクリーン描画そのものの仕組みはClaude CodeのTUI(フルスクリーン)とはにまとめています。

RStudio Serverで使うときの補足

RStudio Serverのターミナルは、ブラウザの中のxterm.jsという端末で動いています。Claude Codeから見ると手元のマシンのクリップボードは遠く、サーバー内の画面や共有の仕組みも通常は用意されていません。「コピー」はブラウザが許す範囲でしか通らない、と考えておくと、同じ型の症状を他の環境で見たときにも切り分けやすくなります。

Claude Codeにコードを書かせた結果をRStudioのエディタに貼りたいだけなら、ターミナル出力のコピーに頼らず、ファイルとして書き出させる運用もあります。出力ファイルをRStudioのファイルペインから開けば、クリップボードを経由せずに済みます。R環境のセットアップ側の話は、Claude CodeでRの環境を整える手順で扱っています。

まとめ

症状の入り口は、フルスクリーン描画のマウス選択がブラウザ型の端末でクリップボードに届かないことです。確実に効いたと報告されているのは/tui defaultだけで、ほかは製品の仕様から選べる候補にとどまります。試すなら、まずShift選択(低コスト)、次にCLAUDE_CODE_DISABLE_MOUSE=1、それでも合わなければ/tui defaultの順が、失うものが少ない並びです。上の切り分けで/tui defaultを先に試すのは、症状の型を確かめるためで、日常の回避としては描画を変えない方法から入る、という違いがあります。

参照した一次ソース

この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。

  1. github.com/anthropics/claude-code/issues/91125
  2. code.claude.com/docs/en/fullscreen
  3. code.claude.com/docs/en/settings-reference
  4. code.claude.com/docs/en/env-vars
この記事を共有:XはてブLinkedIn