Claude CodeのSendUserFileでスマホに成果物を送る条件と使い方
SendUserFileは、Claude Codeが作ったレポートや図をスマホなど手元の端末へ届けるツールです。displayの3つの値、使える条件、届かないときの切り分けをまとめます。
Claude CodeのSendUserFileでスマホに成果物を送る条件と使い方
SendUserFileは、セッションの中で作ったファイルを、いま画面を見ている端末へ送る組み込みツールです。レポート、図、スクリーンショット、ビルドした成果物が対象で、キャプションも付けられます。ファイル名を会話に書いて終わりにせず、手元の端末にファイルそのものが届く点が要になります。
ただし、いつでも使えるツールではありません。使えるのはRemote Controlのクライアントが接続されているときか、クラウドセッションのときです。この記事では、そのツールの役割、display 入力の3つの値、使える条件、届かないときの見分け方を順に見ていきます。
SendUserFileとは何をするツールか
SendUserFileは、Claude Codeのツール一覧に載っている組み込みツールの1つです。セッションのファイルをキャプション付きで送り、生成したレポートや図が会話の文面に登場するだけで終わらず、端末へ届くようにします。
たとえば外出中にスマホから長時間のタスクを見守っているとします。Claudeが調査結果をMarkdownにまとめても、パスが文字で返るだけなら、そのファイルは手元のPCの中です。SendUserFileを使うと、スマホの画面でファイルを開いたり、ダウンロードしたりできます。
ツール一覧の Permission required 列は、このツールについてNoです。この列は、Manualモードで作業ディレクトリ内のパスに対して確認が出るかどうかを示します。
displayで表示方法を選ぶ
v2.1.196から、任意の入力として display が加わりました。ファイルをどう見せるかを決める入力で、値は2つあり、指定しない場合もあります。
| 指定 | 動き | 向く場面 |
|---|---|---|
render | 動きクライアント内でファイルをそのまま開く | 向く場面図やレポートをその場で読む |
attach | 動きダウンロード用のカードだけを出す | 向く場面大きなファイルや、保存が目的の成果物 |
| 未指定 | 動きファイルの種類を見てクライアントが決める | 向く場面迷ったらこの既定 |
render は、開いた画面で中身をすぐ確認したいときの指定です。attach はカードだけを出すので、会話の流れを崩さずに成果物を渡せます。未指定の場合は、種類ごとの振り分けをクライアント側に任せる形になります。
この入力を選ぶのはClaudeです。人間がコマンドで display を渡すわけではありません。狙いどおりの見せ方にしたければ、指示文で伝えることになります。書き方の例は後の節で扱います。
使える条件は2つ、使えない環境は3つ
ツールが使えるのは次のどちらかです。
- Remote Controlのクライアントが接続されている
- クラウドセッション(Claude Code on the web)である
送るファイルが端末へ届く経路は、Anthropicが運用する基盤を通ります。そのため、Amazon Bedrock、Google CloudのAgent Platform、Microsoft Foundryでは、このツールは使えません。
| 状況 | SendUserFile |
|---|---|
| Remote Controlのクライアントが接続中 | SendUserFile使える |
| クラウドセッション | SendUserFile使える |
| Amazon Bedrock / Agent Platform / Foundry | SendUserFile使えない |
ドキュメントに挙がっている使用条件は、上の2つだけです。Remote Controlを有効にしていないローカルの単独セッションは、この条件に含まれていません。ターミナルの前に座っているだけなら、成果物のパスはそのまま手元で開けるので、送る必要がありません。
Remote Controlが前提のときに詰まりやすい点
ローカルで使うなら、まずRemote Controlがつながっていなければ話が始まりません。接続の手順そのものはRemote Controlの入門記事にまとめてあります。ここでは、SendUserFileが使えない原因になりうる要件だけを拾います。
- サブスクリプションはPro、Max、Team、Enterpriseです。APIキーは対象外です
- TeamとEnterpriseでは、Ownerが管理画面でRemote Controlのトグルを有効にしておく必要があります
ANTHROPIC_BASE_URLがapi.anthropic.com以外を指している構成では、Remote Controlが使えませんCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICまたはDISABLE_GROWTHBOOKを設定していると、Remote Controlが使えません- 未信頼のディレクトリでは、
claude remote-controlが信頼するかどうかを尋ねます
ANTHROPIC_BASE_URL やLLMゲートウェイが絡むエラーは、「requires the Anthropic API」の意味を解説した記事に原因の一覧があります。SendUserFileが見当たらないときは、まずRemote Control側の要件を疑うのが早道です。
接続を確かめるコマンドは次の2つです。
# サーバーモードで起動(端末から接続を待ち受ける)
claude remote-control
# 起動済みの対話セッション内で接続する(スラッシュコマンド)
# /remote-controlローカルとクラウドで「届く先」の意味が変わる
条件の2つは、セッションが動く場所が違います。Remote Controlはセッションが手元のマシンで動き、Webやスマホはその窓口になります。クラウドセッションは、Anthropicが管理するクラウド基盤(組織の自前環境を選んだ場合はそちら)で動き、ノートPCを閉じても走り続けます。
この違いは、生成物の置き場所に響きます。
| Remote Control | クラウドセッション | |
|---|---|---|
| セッションの実行場所 | Remote Control手元のマシン | クラウドセッションクラウド基盤 |
| ファイルの元の置き場所 | Remote Control手元のPC | クラウドセッションクラウド上の作業環境 |
| 送らなかった場合 | Remote Control帰宅後にPCで開ける | クラウドセッションセッション内に残る |
| SendUserFileの効果 | Remote Control外出先の端末へ先に渡せる | クラウドセッション手元に何もない状態で成果物を受け取れる |
クラウドセッションは、ローカルにリポジトリがない状態でも作業を始められる使い方です。手元の端末にファイルが1つもないので、レポートや図を読むには、会話に出た文字を読むか、ファイルを受け取るかのどちらかになります。SendUserFileは後者を担います。
Remote Controlの側では、PCが動いているので成果物は手元にあります。それでも外出中は開けないため、スマホへ先に送る意味が出ます。
クラウドセッションを使えるプランは、Pro、Max、Teamと、プレミアムシートまたはChat + Claude Codeシートを持つEnterpriseです。Remote Controlとは対象プランの書かれ方が異なるので、両方を使い分ける場合は、それぞれの条件を別々に確認します。
逆向きの「スマホからPCへ」とは別の機能
Remote Controlには、スマホやブラウザーから写真やファイルを添付して送る機能もあります。こちらはユーザーからClaudeへ向かう方向です。Claudeは添付された写真をメッセージの一部としてそのまま見て、写真以外のファイルは手元のマシンにダウンロードしたうえで @ のファイル参照として受け取ります。
SendUserFileは、その反対の向きです。
| 向き | 何が起きるか | 使う機能 |
|---|---|---|
| ユーザー → Claude | 何が起きるかスマホの写真やファイルが、メッセージの一部か @ 参照になる | 使う機能Remote Controlの添付 |
| Claude → ユーザー | 何が起きるか生成したファイルが端末に届く | 使う機能SendUserFile |
同じスマホの画面でも、送る側と受け取る側が逆になります。往復の作業では、スマホから元データを添付し、Claudeが加工した結果をSendUserFileで受け取る流れが組めます。片方の機能が動くことは、もう片方が動く保証にはなりません。
権限設定とフックでの扱い
ツール名は、権限ルールやフックのmatcherにそのまま書く文字列です。SendUserFileのように括弧付きの指定子を持たないツールは、名前だけを書く形になります。
--tools フラグで組み込みツールの集合を絞り込むときも、ツール名はこの文字列です。手順は--tools フラグの解説にあります。フックからこのツールの呼び出しを見たいときは、PreToolUse hookの記事にあるmatcherの書き方に沿って、ツール名を指定します。
設定ファイルの断片は、たとえば次のような形になります。以下は書式の例で、SendUserFileに対する挙動をここで検証した結果ではありません。
{
"permissions": {
"deny": ["SendUserFile"]
}
}組織の運用でファイルの外部送信そのものを止めたい場合は、こうしたルールを入れる前に、対象の環境で実際に効くかどうかを確認するのが安全です。
指示文でdisplayの狙いを伝える
display を選ぶのはClaudeなので、成果物の扱いはプロジェクトの指示文に書いておくと揃います。CLAUDE.mdに置く規約の一例です。
## 成果物の受け渡し
- 調査レポートや図を作ったら、ファイルのパスを書くだけで終わらせず、
SendUserFile で送る。
- その場で読ませたい短いレポートと図は render にする。
- ビルド成果物や大きなファイルは attach にして、ダウンロードだけできるようにする。
- キャプションには、何のファイルかを1文で書く。これはClaudeへの依頼文の例です。書いたとおりに選ばれるかどうかは実際のセッションで確認してください。送れない環境で動くセッションが混ざる場合は、「送れないときはパスを書く」という代替も1行足しておくと、ツールが見つからない状況でも成果物の場所が会話に残ります。
届かないときの切り分け
ファイルが手元の端末に届かないときは、原因を次の順で絞ります。
- セッションの種類を確認する。ローカルならRemote Controlのクライアントが接続中か、クラウドセッションかを見ます
- 利用しているプロバイダーを確認する。Bedrock、Agent Platform、Foundryのいずれかなら、このツールは使えません
- Remote Controlの要件を確認する。プラン、
ANTHROPIC_BASE_URL、フィーチャーフラグ関連の環境変数が原因になりえます - Claudeに
What tools do you have access to?と尋ね、SendUserFileがツール一覧に出ているかを見る
ドキュメントでは、使えるツールの一覧はプロバイダー、プラットフォーム、設定によって変わると説明されています。実際に読み込まれているツールは、Claudeに直接尋ねるのが確認の方法です。
render を指定したのに画面で開かず、カードだけが出ることもあります。その場合、ファイルの種類やクライアントの表示側で決まっている可能性があります。ドキュメントは、未指定時にクライアントが種類で判断するとだけ説明しており、render を指定した場合に表示できない種類の扱いは書いていません。
まとめ
SendUserFileは、Claudeが作ったファイルを手元の端末へ渡すためのツールです。display は render、attach、未指定の3通りで、迷ったときは未指定にしてクライアントに任せられます。
使える場面は、Remote Controlの接続中かクラウドセッションです。BedrockなどのクラウドAI基盤経由では使えません。ローカルで使う場合は、Remote Controlの要件がそのままSendUserFileの前提条件になります。届かなければ、セッションの種類、プロバイダー、Remote Controlの要件、ツール一覧の順で見ていきます。