Claude Media
Claude Code貼り付けで大きいテキストが省略される仕組みと対処法

Claude Code貼り付けで大きいテキストが省略される仕組みと対処法

800字か3行を超える貼り付けが折りたたまれても全文が送られる仕組みと、キャッシュ切れの再送、見えない文字の除去、誤って消したときの戻し方を解説します。

Claude Codeの入力欄に800字を超えるテキスト、または3行を超える内容を貼り付けると、[Pasted text #1 +120 lines]のようなプレースホルダーに折りたたまれます。表示が短くなるだけで、送信時には元の内容がそのままClaudeに渡ります。

折りたたまれた内容は~/.claude/paste-cache/に保存され、履歴から呼び戻したプロンプトの再送にも使われます。この記事は、プレースホルダーを見て不安になったときから、古いプロンプトを再送して通知が出たとき、貼り付けを誤って消したときまで、困る場面ごとに挙動を並べます。

数字

貼り付けの折りたたみを決める数字

  • 折りたたみのしきい値

    800字超 または 3行超

    どちらか一方で対象になる

  • 保存先

    ~/.claude/paste-cache/

    貼り付け内容の実体

  • 保持期間の既定

    30日

    cleanupPeriodDays。最小は1

  • 画像の扱い

    [Image #N] のチップ

    文字数・行数の判定は公式に記載なし

画像以外は公式ドキュメントの記載値

プレースホルダーのまま送信して大丈夫か

大丈夫です。折りたたまれるのは画面上の表示だけで、Enterを押した時点でClaudeに渡るのは貼り付けた全文です。長いログやコードを貼っても入力欄が埋まらないための表示上の工夫であり、要約されずに全文が送られます。

過去には、貼り付けのプレースホルダーを含む長いプロンプトが自動で切り詰められ、貼り付けの中身が気づかれないまま落ちる不具合がありました。この不具合はv2.1.136で修正されました。v2.1.135以前を使っている場合は、送信後に届いた内容を確かめると安心です。

CIのエラーログを300行貼れば、入力欄には[Pasted text #1 +300 lines]の1行だけが残ります。そのまま送れば、Claudeが受け取るのは省略前の300行です。改行だけを入れて送信を止める操作は複数行入力の方法で扱っています。貼り付けの改行はキー操作なしでそのまま保持されるので、別の仕組みです。

Claudeは、プレースホルダーの中身を「入力者が打った文ではなく、どこかから貼り付けた文」として印を付けて受け取ります。貼り付けの中に指示が紛れていても、入力者が書いた文が求めた範囲でだけ従うよう伝えられます(機能フラグを取得しないセッションでは印が付きません)。詳しい扱いは貼り付けとプロンプトインジェクション対策の記事にあります。

貼り付けたのに1回目のEnterで送信されない

貼り付けた文章に、ターミナルでは何も描画されない文字が混じっていると、1回目のEnterは送信になりません。タグ文字、双方向制御文字、ゼロ幅スペースなどが対象で、Claude Codeは送信前にこれらを除去します。折りたたまれた貼り付けの中身も同じく掃除されます。

除去が起きると、清掃済みのプロンプトが入力欄に戻り、Removed 3 invisible characters · review and press Enter to sendのような通知が出ます。内容を確認してもう一度Enterを押せば送信されます。ペルシア語やインド系文字が使う結合子と、絵文字列の中の選択子は除去されません。

コマンドラインの引数で渡したclaude "fix the login bug"のようなプロンプトや、対話セッションにパイプで流し込んだ入力も同じ扱いです。文字を除去して通知を出したうえで、2回目のEnterを待たず、清掃済みのプロンプトが送られます。除去後の先頭が/になる場合だけは、入力欄に置いて確認を求められます。

貼り付けを消してしまった・間違えたとき

プレースホルダーは1つの塊として扱われます。Ctrl+WやCtrl+Kのような単語・行の削除ショートカット、あるいはvimのdf]のような削除で範囲がプレースホルダーに触れると、プレースホルダーが丸ごと消えます。fやtのモーションを使うvimの削除でも同じで、[Pasted text #1 +120 lines]の一部だけが残る中途半端な状態にはなりません。

戻し方は削除の種類で分かれます。

くらべる

消した貼り付けの戻し方

Ctrl+W / Ctrl+K など

単語・行の削除ショートカット

Ctrl+Yで、直前に削除したテキストを貼り戻せます。プレースホルダーごと復元されます。

df] など

vimのNORMALモードでの削除

NORMALモードでpを押すと、削除したテキストが貼り戻されます。

入力そのものを1つ前の状態に戻したいときは、Ctrl+_(またはCtrl+Shift+-)が「直前の入力編集を取り消す」ショートカットです。貼り付け1回が取り消しの1単位になるかどうかは公式の説明に書かれておらず、この記事では確認していません。Ctrl+Yの直後にAlt+Yを押すと、それ以前に削除したテキストを順に切り替えて貼り戻せます。macOSでは、ターミナルの設定でOptionキーをMetaとして扱う必要があります。ショートカットの全体像はClaude Codeショートカット一覧にあります。

履歴から呼び戻した貼り付けが消えていた

↑やCtrl+Pでコマンド履歴から呼び戻して再送すると、プレースホルダーではなく貼り付けた全文がもう一度Claudeに送られます。新しいセッションを開いたあとでも同じです。この再送を支えているのが、~/.claude/paste-cache/のキャッシュです。

キャッシュは他のセッションデータと同じ保持期間ルールに従い、cleanupPeriodDaysより古いファイルは削除されます。設定に0を入れると検証エラーになります。

履歴そのものにも決まりがあります。入力履歴は作業ディレクトリごとに保存され、↑で過去のセッションのプロンプトまでさかのぼれます。/clearで新しいセッションを始めると、新しいセッションのプロンプトが先に並び、以前のセッションの分がその後ろに続きます。同じプロンプトを2回続けて送っても履歴には1件しか記録されないので、↑は直前とは別のプロンプトへ進みます。

貼り付けを含む昔のプロンプトを探すなら、Ctrl+Rの履歴検索が便利です。通常の画面では、検索は全プロジェクトのプロンプトを新しい順にたどり、重複は最新の1件にまとめられます。フルスクリーン表示では検索ダイアログが開き、Ctrl+Sで範囲を「このセッション」「このプロジェクト」「すべてのプロジェクト」の順に切り替えられます。EnterかTabで候補を入力欄に置けます。長く開いていなかったプロジェクトで古いプロンプトを呼び戻すと、プレースホルダーだけが残り、実体は消えていることがあります。

プレースホルダーだけが残るのは、プロンプトの履歴と貼り付けの実体が別の場所にあるためです。入力したプロンプトは~/.claude/history.jsonlに、時刻とプロジェクトのパスつきで記録されます。このファイルは↑での呼び戻し、Ctrl+Rの履歴検索、!で始めるシェルコマンドの補完に使われ、自動削除の対象ではなく、利用者が消すまで残ります。一方のpaste-cache/は、先に見た保持期間で削除されます。文章の履歴は残り、貼り付けの中身だけが先に消えるので、呼び戻したプロンプトに空のプレースホルダーが出る場面が生まれます。

このとき[Pasted text #N]という文字列がそのまま送られることはありません。送信するとどのペーストが失われたかを示す通知が出て、その後の動きは入力の種類で分かれます。

くらべる

キャッシュ切れのプロンプトを送信したとき

送信される

通常のプロンプトで、ほかに文字が残る

プレースホルダーだけを取り除き、残りの文字列を送信します。

中止される

シェルモード・/コマンド・除去後に空になる入力

送信を取りやめ、プレースホルダーを含んだ元の文字列を入力欄に残します。プレースホルダーを削除するか、コマンドを編集してからもう一度送信します。

除去すると実行内容が変わるコマンドが、黙って別物になって走らないための仕様です。

画像を貼り付けると[Image #N]のチップが入る

クリップボードの画像はCtrl+V(iTerm2ではCmd+V、WindowsとWSLではAlt+V)で貼り付けられ、カーソル位置に[Image #N]というチップが入ります。テキストのような800字・3行のしきい値は、画像については公式に書かれていません。チップはカーソル位置に入るので、プロンプトの文中の位置で「この画像」と指し示せます。

WSLではCtrl+VとAlt+Vの両方が既定で割り当てられています。ターミナルがCtrl+Vを横取りするならAlt+Vを試してください。キーバインド設定のアクション名はchat:imagePasteです。

画像の保存先は版で変わりました。v2.1.274以前は~/.claude/image-cache/<session>/に保存され、それ以降はCLAUDE_CODE_TMPDIRが指す一時ディレクトリ配下の、セッションごとのimages/に置かれます。~/.claudeの外にあるので、古い画像を探すときは場所を取り違えないようにします。保持期間も同じ設定に従います。

別の質問を先に済ませたいときはCtrl+S

長いログを貼った直後に別の質問を挟みたいとき、入力欄を空にすると貼り付けごと失うように見えます。Ctrl+Sのスタッシュなら、貼り付けたまま退避して戻せます。

手順

貼り付け入りのプロンプトを一時退避する

  1. 1

    Ctrl+Sで退避する

    入力欄にテキストがある状態でCtrl+Sを押すと、内容がスタッシュされ、入力欄が空になります。

  2. 2

    別のプロンプトを送る

    空になった入力欄で、先に済ませたい短い質問を入力して送信します。

  3. 3

    空の入力欄でもう一度Ctrl+S

    スタッシュしたテキスト、カーソル位置、貼り付けた内容、入力モードがまとめて復元されます。!で始めたシェルコマンドなら、シェルモードのまま戻ります。

ファイル丸ごとや長いログはファイル経由にする

VS Code統合ターミナルは、非常に大きな貼り付けの途中で文字を取りこぼすことがあります。文字が欠けた状態でClaudeに届く可能性があるため、巨大な入力ではファイルに書き出して読ませる方法が案内されています。会話のトランスクリプトが貼り付けの全文で埋まらず、Claudeも後の会話でパスを指定してそのファイルを参照できます。

この方法はVS Code以外のターミナルでも使えます。macOSならpbpasteでクリップボードの内容をファイルに落とせます。

pbpaste > error.log
error.logを読んで原因を調べて

複数ファイルにまたがる出力も、ファイルにまとめて渡せば入力欄のプレースホルダーに頼らずに済みます。WindowsのPowerShellならGet-Clipboard、Linux(X11)ならxclip -selection clipboard -oが、同じ役割のコマンドです。xclip -oだけだとマウスで選択した文字(PRIMARY選択)が出力され、コピーした内容とは別物になります。Waylandではwl-pasteを使います。

手元のv2.1.285で確認できたこと

claude --versionは2.1.285 (Claude Code)を返しました。claude --helpのオプション一覧を見ると、入力に関係するのは--input-format(--printと組み合わせたときのみ有効)などです。貼り付けを折りたたむしきい値を変えるフラグは、v2.1.285のヘルプには出ません。

空の設定ディレクトリをCLAUDE_CONFIG_DIRに指定して--helpと--versionだけを実行したところ、ディレクトリには何も作られませんでした。--helpと--versionを実行しただけではpaste-cache/は作られない、ということです。実際の貼り付けは対話画面での操作なので、ここでは試していません。

保持期間を変更する

貼り付けキャッシュの寿命を変えるのは~/.claude/settings.jsonのcleanupPeriodDaysです。この設定は貼り付けキャッシュだけでなく、会話のトランスクリプトなど他のセッションデータの削除時期も左右します。

{
  "cleanupPeriodDays": 90
}

値を大きくすると古い貼り付けが長く残り、履歴の再送が失敗しにくくなる一方、ディスクに残るファイルも増えます。プライバシー面では、これらのファイルは平文で保存され、貼り付けたテキストも含まれます。値を小さくすれば削除が早まります。プロジェクト単位でローカルの状態を消すclaude project purgeは、--dry-runを付けると削除せずに対象の一覧だけを確認できます。公式が挙げる削除対象は、トランスクリプトと自動メモリ、history.jsonlのうちそのプロジェクトで入力した行、~/.claude.jsonのプロジェクト項目などで、paste-cache/は含まれていません。画像もセッションごとのimages/にあって~/.claudeの外なので、この削除では消えず、cleanupPeriodDaysより古くなった時点で自動削除の側で消えます。プロンプト履歴の書き込み自体を止めたい場合は、環境変数CLAUDE_CODE_SKIP_PROMPT_HISTORYがあります。設定ガイドで設定ファイル全体を確認できます。

Claude Codeの全体像はClaude Code完全ガイドにあります。

この記事を共有:XはてブLinkedIn