Claudeのモバイルアプリをリンクから直接開く仕組み
Claudeのモバイルアプリが対応するclaude://URLスキームの使い方をまとめます。Codeタブやセッションを直接開くパラメータと、デスクトップ版との違いにも触れます。
Claudeのモバイルアプリ(iOS・Android)はclaude://から始まるURLに反応します。mailto:リンクがメールアプリを開くのと同じ仕組みです。OSに登録されたこのプレフィックスをタップすると、ブラウザーではなくClaudeアプリが立ち上がります。
行き先はCodeタブのセッション一覧、既存セッション、プロンプト入りの新規セッションの3つです。サードパーティアプリやiOSショートカット、Webページにリンクを仕込んでおけば、タップ1つでClaude Codeの作業を始められます。iOSとAndroidで同じURL仕様なので、リンクをプラットフォームごとに作り分ける必要はありません。
行き先は3つ — いずれもCodeタブの中
claude://の3つの行き先
claude://code
Codeタブをセッション一覧の状態で開きます。
claude://code/{session-id}
指定したIDの既存セッションを開きます。IDが存在しないときはセッション一覧に着地します。
claude://code/new
新規セッションの入力欄を開きます。パラメータで内容を事前に埋め込めます。
この機能にはアカウントのClaude Codeへのアクセス権が要ります。パラメータの値はすべてURLエンコードが必須です。
新規セッションを組み立てるパラメータ
claude://code/newには4つのパラメータを付けられます。いずれも省略可能で、指定しなければ空の状態でセッションが開きます。
| パラメータ | 必須 | 説明 |
|---|---|---|
q | 必須任意 | 説明入力欄に事前入力するテキスト。エイリアスとしてpromptも使える |
mode | 必須任意 | 説明セッションモードを事前選択。planかcodeを受け付ける。プランで使えないモードは無視される |
repo | 必須任意 | 説明owner/name形式(大文字小文字を区別しない)でGitHubリポジトリを事前選択。接続済みGitHubアカウントに無いリポジトリは無視される |
branch | 必須任意 | 説明ブランチを事前選択。repoが必須 |
次のリンクは、anthropics/claude-codeリポジトリのmainブランチを、失敗したテストの調査プロンプト付きで開きます。
claude://code/new?q=Fix%20the%20failing%20test&repo=anthropics%2Fclaude-code&branch=mainデスクトップ版のClaude Codeリンクにはフォルダーやファイルを指定するパラメータもあります。モバイル版のリンクに含めても、これらは無視されます。
日本語のプロンプトをエンコードする
手書きで%E6%...を並べるのは現実的ではないので、リンクはコードで組み立てます。Node.js v20.18.0のencodeURIComponentに、日本語・括弧・&・#・/を含むプロンプトを通すと次の結果になりました。
node -e 'console.log(encodeURIComponent("本番のログイン失敗を調査して(PR #42 & ブランチ feature/auth)"))'%E6%9C%AC%E7%95%AA%E3%81%AE%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E5%A4%B1%E6%95%97%E3%82%92%E8%AA%BF%E6%9F%BB%E3%81%97%E3%81%A6(PR%20%2342%20%26%20%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%20feature%2Fauth)見落としやすいのは、空白が+でなく%20になる点、#が%23・&が%26・/が%2Fに変わる点、そして(と)だけはそのまま残る点です。repoのanthropics/claude-codeも同じ関数に通すとanthropics%2Fclaude-codeになり、公式の例と一致します。
リンクが効かないときの切り分け順
- 1
アクセス権を見る
Claude Codeへのアクセス権がないアカウントでは、リンク全体が機能しません。
- 2
エンコード漏れを疑う
qに&や#が生で残っていると、&は区切りとして、#以降は別扱いとして解釈されます。%26と%23に直します。 - 3
repoとbranchの組を見る
リポジトリが選ばれないときは、接続済みのGitHubアカウントに
repoのリポジトリがあるかを見ます。branchが効かないときは、同じリンクにrepoが入っているかも合わせて見ます。 - 4
プランとモードを見る
mode=planなどが反映されないときは、利用中のプランにそのモードがあるかを見ます。
アプリを入れていない相手にはUniversal Linksを使う
同じCodeタブの経路は、https://claude.ai/code/から始まるUniversal Linksでも開けます。アプリが入っていればOSがアプリを起動し、入っていなければブラウザーでページが開きます。
claude://とhttps://claude.ai/codeの違い
claude://
アプリが入っていない端末では、リンクを開けないことがあります。
https://claude.ai/code
アプリがなければブラウザーで開くので、行き止まりになりません。
社外向けのドキュメント、SNS、メールのように相手の環境が分からない配布先では、フォールバックのあるUniversal Linksが向きます。相手が全員アプリ導入済みの社内ランブックなら、claude://でも構いません。
同じ経路でも着地点が違う
2つの方式は経路の名前が似ていますが、ルートごとの着地点は一致しません。
| 開きたい画面 | claude://の書き方 | https://claude.ai/の書き方 |
|---|---|---|
| セッション一覧 | claude://の書き方claude://code | https://claude.ai/の書き方なし |
| 既存セッション | claude://の書き方claude://code/{session-id} | https://claude.ai/の書き方https://claude.ai/code/{session-id} |
| 新規セッション | claude://の書き方claude://code/new | https://claude.ai/の書き方https://claude.ai/code |
| 内容を埋めた新規セッション | claude://の書き方claude://code/new?q=...&repo=... | https://claude.ai/の書き方https://claude.ai/code/new?q=...&repo=... |
つまりclaude://codeをそのままhttps://claude.ai/codeに置き換えると、セッション一覧ではなく新規セッションの入力欄が開きます。プレフィックスの出し分けだけでは足りません。Universal Linksの公式の表に載るのは、新規セッション・既存セッション・パラメータ付きの3ルートで、一覧を開くルートはありません。パラメータ名と値の仕様は両方式で共通なので、q・repo・branch・modeを組み立てるコードは使い回せます。
デスクトップ版・ターミナル版との違い
紛らわしいのは、デスクトップ版のClaudeアプリ(macOS・Windows・Linux)も同じclaude://スキームに反応する点です。解決先はモバイルよりずっと広く、Codeタブに限定されません。
| 比較項目 | モバイル版claude:// | デスクトップ版claude:// |
|---|---|---|
| 対応する経路 | モバイル版claude://Codeタブの3つ(code / code/{id} / code/new) | デスクトップ版claude://チャット・プロジェクト・Code・Coworkの4種 |
| 新規チャットを開く | モバイル版claude://— | デスクトップ版claude://claude://claude.ai/new |
| 新規Codeセッション | モバイル版claude://claude://code/new | デスクトップ版claude://claude://code/new |
| Codeセッションのフォルダー指定 | モバイル版claude://無視される | デスクトップ版claude://folderパラメータで指定可(確認ダイアログあり) |
| Coworkセッション | モバイル版claude://— | デスクトップ版claude://claude://cowork/new |
| Universal Linksの代替経路 | モバイル版claude://https://claude.ai/code/... | デスクトップ版claude://— |
デスクトップ版の公式ページによると、OSはclaude://のURLをClaudeに渡し、アプリが起動していなければまず起動します。Claudeはその後にパス部分とクエリを読み、アプリ内の行き先へ移動します。qに入れたプロンプトは約14,000文字で切り詰められます。
チャットやプロジェクトを開くのはclaude://claude.ai/chat/{conversation-id}とclaude://claude.ai/project/{project-id}です。IDはClaudeのURL末尾にあるUUIDです。IDが無い、または不正なときは、最近のチャット一覧かプロジェクト一覧が開きます。モバイル版で存在しないセッションIDがセッション一覧に落ちるのと、同じ種類のフォールバックです。
ドキュメントやツールにリンクを埋め込むときは、読者がどちらの環境で開くかを先に決め、経路をその環境向けに絞ります。デスクトップ版の全リンク形式はClaude Desktopをclaude://リンクで起動するにあります。
Claude Codeのターミナル(CLI)には、claude-cli://という別系統のURLスキームもあります。詳細はClaude Code Deep Linksにまとめています。claude://はアプリを開き、claude-cli://はローカルのターミナルでセッションを開きます。名前が似ているだけで別の仕組みです。
VS Codeには別のハンドラーvscode://anthropic.claude-code/openがあり、ターミナルウィンドウではなくClaude Codeのエディタータブを開きます。
| 比較項目 | モバイル版claude:// | ターミナル版claude-cli:// |
|---|---|---|
| 開く先 | モバイル版claude://Claudeアプリ(Codeタブ) | ターミナル版claude-cli://ローカルの新しい端末ウィンドウ |
qの上限 | モバイル版claude://— | ターミナル版claude-cli://5,000文字 |
repoの解決 | モバイル版claude://接続済みGitHubアカウントから選ぶ | ターミナル版claude-cli://そのマシンで過去にclaudeを実行したローカルクローンへ解決する |
| 作業ディレクトリ指定 | モバイル版claude://なし | ターミナル版claude-cli://cwd(絶対パス) |
cwdとrepoを両方渡すとcwdが優先され、repoは無視されます。cwdのパスが存在しなくても同じです。ターミナル版のハンドラーが登録されるのは、対話セッションで最初のプロンプトを送信したときで、セッションの開始時ではありません。
同じrepoでも、参照する情報源がまるで違います。モバイル版はGitHub連携の有無で決まり、ターミナル版はローカルのクローンの履歴で決まります。ターミナル版でクローンを一度も開いていないと、セッションはホームディレクトリで始まります。
手元で試すにはOSごとにコマンドが違う
デスクトップ版の公式ページには、リンクをシェルから開くテストが載っています。macOSではopen "claude://claude.ai/new?q=Hello"を使います。Windowsのコマンドプロンプトではstart "" "claude://claude.ai/new?q=Hello"です。Linuxではxdg-open "claude://claude.ai/new?q=Hello"を使います。これらはデスクトップ版向けの手順です。
モバイル版のリンクは、スマホ上でclaude://codeを開き、Codeタブのセッション一覧が出るかを見て試します。
リンクの貼り先で気をつけること
ターミナル版の公式ドキュメントには、GitHubのREADME・Issue・PR・Wikiがhttpとhttps以外のスキームを除去する例が載っています。[label](claude-cli://...)はラベルだけの表示になり、URLが消えます。回避策はコードブロックにURLを置く方法です。
claude://もhttpとhttps以外のスキームなので、同じ種類のMarkdownレンダラーでは同様に扱われる可能性があります。貼り先がカスタムスキームを許すかどうかを先に試し、通らない場所にはUniversal Linksを貼れば確実に開けます。
iOSショートカットやランブックから呼び出す
リンクなので、ブラウザーのアドレスバー以外からも呼び出せます。iOSのショートカットアプリなら「URLを開く」アクションが使えます。選択したテキストをencodeURIComponent相当でエンコードしてqに差し込み、固定のrepoと組み合わせれば、アプリを開いてから貼り付ける手間が省けます。リンク先の記事が扱うApp Intents方式とは別に、ここではURLを組み立てて渡す方式を使います。
CIの失敗通知やインシデントのランブックにclaude://code/new?repo=...&q=...形式のリンクを1本置いておく使い方もあります。対応者がタップすると、正しいリポジトリを指定したセッションの入力欄が開きます。
リンクは何を実行するのか
モバイル版の公式ページは、qを「入力欄に事前入力するテキスト」と説明しています。リンクが決めるのは画面遷移とプリフィルまでです。
デスクトップ版の公式ページには、より具体的な記述があります。qで埋めたプロンプトは、レビューして送信する前提のものです。folderはClaude Desktopが確認ダイアログを出してから作業ディレクトリに採用し、信頼済みのフォルダーでも毎回確認します。ターミナル版でも、プロンプトは入力されるだけで、Enterを押すまで送信されません。外部リンク由来であることを示す警告行も表示されます。1,000文字を超えるプロンプトでは、警告に文字数も出ます。
モバイル版にはローカルのフォルダーを指定するパラメータがないので、この確認ダイアログに相当するステップは出番がありません。
よくあるつまずき
切り分けの順序は前の手順のとおりです。それで解決しないものは次の2つです。
- デスクトップ版の
folderをモバイル用リンクに付けている: モバイル版はfolderとfileを無視します。プラットフォームごとにパラメータ一覧を分けて管理します - 社外に共有したリンクだけ反応しない: アプリ未導入の端末では
claude://のリンクを開けないことがあります。相手の導入状況が分からないときはhttps://claude.ai/code/...に切り替えます
まとめ
リンクを配る前に、3点を確かめます。配布先が全員アプリ導入済みか、貼り先がカスタムスキームを通すか、一覧と新規セッションのどちらに着地させたいかです。これでclaude://とhttps://claude.ai/codeのどちらを使うかが決まります。一覧を開かせたいならclaude://codeだけが選択肢で、https://claude.ai/codeは新規セッションの入力欄に着地します。