ディープリンク
claude-cli:// のディープリンクで、ターミナルの Claude Code を指定のディレクトリとプロンプトつきで開く方法と、パラメーター・各 OS の登録・つまずきやすい点をまとめます。
ディープリンク(deep link)は、新しいターミナルウィンドウで Claude Code を開く claude-cli:// の URL です。URL に、作業ディレクトリと、あらかじめ入力しておくプロンプトを持たせられます。
要点#
- Claude Code がインストールされた人がリンクを押すと、プロンプトが入力済みのセッションが開く。プロンプトは入力されるだけで、Enter を押すまで送られない
- リンクは URL なので、Runbook・アラート・ダッシュボード・README・CI の失敗通知など、リンクを置ける場所ならどこにでも置ける
- セッションは、リンクがどこにあっても、クリックしたコンピューターのローカルで開く
- パラメーターは
q(プロンプト)・cwd(作業ディレクトリ)・repo(GitHub のリポジトリ) - ハンドラーは、対話セッションで最初のプロンプトを送ったときに OS へ登録される
仕組み#
claude-cli:// は、Claude Code が OS に登録するカスタム URL スキームで、mailto: のリンクがメールのクライアントを開くのと似ています。ディープリンクを押すと次のようになります。
- ブラウザやアプリが URL を OS へ渡す
- OS が
claude-cli://の接頭辞を認識し、あなたのマシンで Claude Code を起動する - リンクが指定したディレクトリで Claude Code が動き、リンクのプロンプトのテキストが入力欄に入った新しいターミナルウィンドウが開く
- プロンプトを読み、必要なら編集して、Enter で送る
- リンクはどこにホストしてもかまいませんが、セッションは常に、クリックしたコンピューターのローカルで開きます。各 OS でどのターミナルが開くかは、後述の「登録と対応するプラットフォーム」を参照してください
- リンクを表示するプラットフォームは、カスタム URL スキームを許可している必要があります。GitHub の扱いと回避策は、後述のトラブルシューティングにあります
起動したセッションに表示されるもの#
ディープリンクは、それだけでは何も実行しません。リンクが選ぶのは、ディレクトリと、プロンプト欄に入れる内容だけです。信頼できないページのリンクを押しても、プロンプトは何の効力も持ちません:入力された内容を読み、Enter を押すまで、モデルには何も届きません。
- セッションが開くと、入力欄の下に
Prompt from an external linkという警告行が出て、プロンプトを送るか消すまで残ります - 1,000 文字を超えるプロンプトでは、警告に文字数が入り、長いプロンプトは指示を画面の外へ押し出せるので、Enter を押す前にスクロールして全文を確かめるよう案内されます
- 権限ルール・
CLAUDE.md・選んだディレクトリの信頼の確認は、ほかのセッションと同じように適用されます
リンクを作る#
ディープリンクは claude-cli://open で始まり、任意のクエリパラメーターが続きます。最小の形は、プロンプトが空で、ホームディレクトリに Claude Code を開きます。
claude-cli://open
ページに置かずに試すには、ブラウザのアドレスバーに貼るか、シェルから開きます(後述)。パラメーターを足すと、セッションの開始場所とプロンプト欄の内容を制御できます。
| パラメーター | 内容 |
|---|---|
q |
プロンプト欄に入れておくテキスト。値は URL エンコードする。複数行のプロンプトの改行は %0A。最大 5,000 文字 |
cwd |
作業ディレクトリに使う絶対パス。ネットワークパスと UNC パスは拒否され、.. の部分や、不可視文字・双方向の制御文字を含むパスも拒否される |
repo |
GitHub の owner/name のスラッグ。Claude Code が、以前に見たことのあるローカルのクローンに解決し、そこで始める。一致するクローンが無ければ、セッションはホームディレクトリで開く |
cwdとrepoは、作業ディレクトリを決める2つの方法です。両方を渡すと、cwdが優先され、cwdのパスが存在しなくてもrepoは無視されます- 次のリンクは、
acme/paymentsというリポジトリを指し、2行の診断のプロンプトを持ちます。自分のリンクを作るときは、acme/paymentsを自分のリポジトリのowner/nameに置き換えます
claude-cli://open?repo=acme/payments&q=Investigate%20the%20failed%20deploy%20of%20payments-api.%0ACheck%20recent%20commits%20to%20main%20and%20the%20last%20successful%20build.
押すと、新しいターミナルウィンドウが開き、acme/payments のローカルのクローンで Claude Code が始まり、プロンプト欄にデコードされたテキストが入ります。
Investigate the failed deploy of payments-api.
Check recent commits to main and the last successful build.
cwd と repo の使い分け#
cwd:リンクを押す全員が、同じ絶対パスにプロジェクトを持っているとき(標準化された開発コンテナや VM イメージなど)に使うrepo:リンクを共有していて、各自が別の場所にクローンしているときに使う。Claude Code は、スラッグを次のようにローカルのパスへ解決するrepoは、リンク先のリポジトリのクローンまたは worktree のうち、claudeを最後に実行したものを開く。Git リポジトリでclaudeを実行するたびに、Claude Code は、そのディレクトリのパスを、リポジトリの GitHub のowner/nameのスラッグに対応づけて記録する。クローンと worktree は別々に追跡される- リンクは、どのブランチをチェックアウトするかを変えない。セッションは、そのディレクトリが現在ある状態で開く
- ようこそ画面のヘッダーに、選んだパスが出るので、正しいクローンが開いたか確かめられます
使い方の例#
Runbook にリンクを埋め込む#
Runbook のディープリンクは、障害対応の担当者に、準備したプロンプトつきで、正しいリポジトリで調査を始める、ワンクリックの入口を与えます。Runbook を表示するプラットフォームが、カスタム URL スキームを許可している必要があります。GitHub が描画する Markdown は claude-cli:// を許可しないので、GitHub の README・issue・wiki のディープリンクは、ラベルだけが表示され、クリックできるリンクになりません(回避策はトラブルシューティングを参照)。
プロンプトは URL の一部なので、URL エンコードが必要です。エンコードした値を作るには、プロンプトのテキストをブラウザのコンソールの encodeURIComponent か、任意の URL エンコーダーに通します。web-gateway というサービスの障害対応の Runbook に調査の入口を足す例:
## High 5xx rate on web-gateway
1. Acknowledge the page in PagerDuty.
2. [Open Claude Code in the gateway repo](claude-cli://open?repo=acme/web-gateway&q=5xx%20rate%20is%20elevated%20on%20web-gateway.%20Check%20recent%20deploys%2C%20error%20logs%20from%20the%20last%2030%20minutes%2C%20and%20open%20incidents%20in%20Linear.)
3. Post initial findings in #incident.
自分の Runbook で使うには、acme/web-gateway をサービスのリポジトリのスラッグに置き換えます。Claude Code が入っていて、そのリポジトリのローカルのクローンを持つエンジニアは、手順 2 を押して、送信できる状態のプロンプトで調査を始められます。
シェルからリンクを開く#
クリックでなく、シェルのスクリプト・エイリアス・自動化からもディープリンクを開けます。OS の URL を開くコマンドに、リンクを引数として渡します。これらのコマンドは、そのマシンで、対話セッションの最初のプロンプトを送ったときに Claude Code が登録するハンドラーに頼ります。
macOS(組み込みの open が、登録された claude-cli:// のハンドラーへ URL を渡します):
open "claude-cli://open?repo=acme/payments&q=review%20open%20PRs"
Linux(ほとんどのデスクトップ環境にある xdg-open が、登録されたハンドラーへ URL を渡します):
xdg-open "claude-cli://open?repo=acme/payments&q=review%20open%20PRs"
Windows の PowerShell(Start-Process が、登録されたハンドラーへ URL を渡します):
Start-Process "claude-cli://open?repo=acme/payments&q=review%20open%20PRs"
Windows の cmd.exe では、start が最初の引用符で囲んだ引数をウィンドウのタイトルとして扱うので、URL の前に空のタイトルを渡します。
start "" "claude-cli://open?repo=acme/payments&q=review%20open%20PRs"
成功すると、新しいターミナルウィンドウで Claude Code が動き、プロンプトが入力済みになります。Linux で xdg-open が見つからないと出たときは、トラブルシューティングを参照してください。
登録と対応するプラットフォーム#
Claude Code は、対話セッションで最初のプロンプトを送ったときに、macOS・Linux・Windows の OS へ claude-cli:// のハンドラーを登録します。claude を起動してプロンプトを送らずに終了しても、ハンドラーは登録されません。別のインストールコマンドを実行する必要はありません。登録はユーザー単位の場所にだけ書き込みます。
| プラットフォーム | ハンドラーの場所 |
|---|---|
| macOS | ~/Applications/Claude Code URL Handler.app |
| Linux | $XDG_DATA_HOME/applications の下の claude-code-url-handler.desktop(既定は ~/.local/share/applications) |
| Windows | HKEY_CURRENT_USER\Software\Classes\claude-cli |
ハンドラーは、検出したターミナルエミュレーターで Claude Code を起動します。
- macOS:Claude Code は、直近の対話セッションで使ったターミナルを覚えて再利用する。対応は iTerm2・Ghostty・kitty・Alacritty・WezTerm・Terminal.app
- Linux:環境変数
$TERMINAL、続いてx-terminal-emulator、続いて一般的なエミュレーターの一覧の順に従う - Windows:Windows Terminal を優先し、次に PowerShell、次に
cmd.exe
登録を完全に防ぐには、settings.json の disableDeepLinkRegistration を "disable" にします(設定キー一覧参照)。ユーザーが再び有効にできないよう組織全体で強制するには、代わりに管理設定へ書きます。
ターミナルの代わりに VS Code のタブを開く#
VS Code 拡張は、ターミナルのウィンドウでなく Claude Code のエディタのタブを開く、自前のハンドラーを vscode://anthropic.claude-code/open に登録します。その URL のパラメーターは、VS Code と JetBrainsを参照してください。
トラブルシューティング#
リンクを押しても何も起きない#
ハンドラーがまだ登録されていない可能性が高いです。登録は、セッションの開始時でなく、対話セッションで最初のプロンプトを送ったときに起きます。そのマシンで対話の claude を始め、何かプロンプトを送って終了し、もう一度リンクを試します。デスクトップ環境の無い Linux では、xdg-open が渡す先を持たないことがあります。
Linux で xdg-open が見つからない#
xdg-open コマンドは xdg-utils パッケージの一部で、最小構成のサーバーイメージ・コンテナ・WSL のディストリビューションは、たいてい入れていません。ディストリビューションのパッケージマネージャーで xdg-utils を入れ(例:sudo apt install xdg-utils)、コマンドを再度実行します。コマンドが動いても何も開かないなら、xdg-open が渡すデスクトップ環境を持たない可能性があります(「リンクを押しても何も起きない」を参照)。
リンクがクリックできず、プレーンテキストで表示される#
Markdown のレンダラーによっては、http と https のリンクだけを許可し、ほかの URL スキームを取り除きます。GitHub は README・issue・プルリクエスト・wiki でこうなり、[label](claude-cli://...) は、リンクも URL も消えて label だけで表示されます。こうしたプラットフォームでは、ディープリンクをコードブロックに入れて、読む人が URL を見て、ブラウザのアドレスバーに貼れるようにします。
セッションがリポジトリでなくホームディレクトリで開く#
repo パラメーターが解決できるのは、Claude Code がすでに見たことのあるクローンだけです。そのクローンの中で一度 claude を実行して、Claude Code にパスを記録させるか、リンクを絶対パスの cwd を使う形に変えます。
意図と違うターミナルが開く#
macOS では、使いたいターミナルで一度 claude を起動すると、次のディープリンクがそれを使います。Linux では、環境変数 $TERMINAL を、使いたいエミュレーターのコマンド名に設定します。Windows では順序が固定です:リンクを PowerShell や cmd.exe のウィンドウでなく Windows Terminal で開きたいなら、Windows Terminal を入れます。
関連#
公式ドキュメント(英語)
2026年10月5日時点の内容をもとに、日本語でまとめています。