Claude Desktopをclaude://リンクで起動する
Claude Desktopが対応するclaude://URLスキームの4種類のリンク形式とパラメータ、日本語プロンプトのエンコードとOS別のテスト方法をまとめます。
Claude Desktop(macOS・Windows・Linux版)は、claude://から始まるURLスキームに対応しています。ブラウザーがhttps://を扱うのと同じ要領で、OSがこのプレフィックスを認識してClaude Desktopを起動します。Webサイトやスクリプト、自作ツールにclaude://リンクを埋め込んでおけば、クリック1つでチャット・Coworkセッション・Codeセッションの入口を直接開けます。
社内Wikiのオンボーディング手順、障害対応のランブック、CIの通知ダッシュボードなど、「クリックした人を毎回同じ場所に連れていきたい」場面で使い道があります。プロンプトの下書きまでURLに含められるため、リンクを踏んだ相手は入力欄が埋まった状態から作業を始められます。
claude://リンクを踏むと何が起きるか
OSがclaude://のURLを受け取ると、そのURLをハンドラーとして登録済みのClaude Desktopに渡します。アプリがまだ起動していなければ、macOS・Windows・Linuxのいずれも先にアプリを起動してからURLを処理します。起動後、Claude Desktopはパスとクエリパラメータを読み取り、該当する画面へ遷移します。
行き先は4種類です。パスの先頭がclaude.aiならチャット系、codeならCodeセッション、coworkならCoworkセッションに着地します。
4種類のリンク形式
新しいチャットを開く
claude://claude.ai/new
claude://claude.ai/new?q=Summarize%20this%20week%27s%20release%20notesqパラメータにテキストを渡すと、入力欄にそのテキストが下書きとして入り、内容を確認してから送信できます。qは省略可能で、指定しなければ空の入力欄で新規チャットが開きます。
既存のチャットやプロジェクトを開く
claude://claude.ai/chat/{conversation-id}
claude://claude.ai/project/{project-id}IDには、対象のチャットやプロジェクトのURL末尾に付いているUUIDを使います。IDが欠けていたり無効だったりする場合、Claude Desktopは最近のチャット一覧かプロジェクト一覧を開きます。
社内ドキュメントに「この案件の相談スレッドはこちら」とリンクを残す使い方に向きます。claude://版のリンクなら、ブラウザーを経由せずデスクトップアプリへ直接ジャンプできます。
Claude Codeセッションを開く
claude://code/new
claude://code/new?q=Fix%20the%20failing%20test&folder=%2FUsers%2Fme%2Frepo自作ツールに「Open in Claude Code」ボタンを置きたいときの形式で、Claude Codeのセッションを入力欄が埋まった状態で開きます。qが入力欄に事前入力するテキストで、エイリアスとしてpromptも受け付けます。folderは作業ディレクトリの絶対パス、fileは添付ファイルの絶対パスです。
Coworkセッションを開く
claude://cowork/new
claude://cowork/new?q=Draft%20the%20Q2%20update&folder=%2FUsers%2Fme%2Fdocs&file=%2FUsers%2Fme%2Fdocs%2Fnotes.mdCoworkセッションを新規に開く形式で、q・folder・fileの3パラメータに対応します。folderにはフォルダーの、fileにはファイルの絶対パスを渡します。promptを別名として使えるのはCodeセッションのリンクで、チャットとCoworkではqを使います。
cowork/newは、自作ツールに「Open in Claude Cowork」ボタンを置くための形式です。Codeのcode/newと対になります。
CodeとCoworkでfolderとfileの扱いが違う
folderとfileは両方のセッションで書けますが、受け取り方が違います。複数のフォルダーやファイルを渡したいなら、行き先はCoworkになります。
folder と file の受け取り方
Codeセッション
folderは最初の値だけが使われ、複数書いても2つ目以降は採用されません。fileは値としては受理されますが、今のところ添付には使われません。
Coworkセッション
folderもfileもパラメータを繰り返して複数指定できます。フォルダーは1つずつ確認ダイアログを経て採用されます。
どちらのセッションでも、リンクで渡されたフォルダーは常に未信頼として扱われます。過去に手動で信頼したフォルダーでも、Claude Desktopは採用前に確認ダイアログを表示します。「確認が毎回出て面倒」という場面でも、リンク側でこのダイアログを省く手段はありません。
日本語のプロンプトを埋め込むときのエンコード
パラメータの値はすべてURLエンコードが必須です。日本語や記号をそのまま書くとリンクが壊れます。手書きは現実的でないので、JavaScriptのencodeURIComponentを通して組み立てるのが手堅い方法です。Node.jsで実際に流した結果を示します。
> encodeURIComponent("今週のリリースノートを要約して")
%E4%BB%8A%E9%80%B1%E3%81%AE%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%83%8E%E3%83%BC%E3%83%88%E3%82%92%E8%A6%81%E7%B4%84%E3%81%97%E3%81%A6
> encodeURIComponent("Fix the test\nline2 & more=1")
Fix%20the%20test%0Aline2%20%26%20more%3D1日本語は1文字が%E4%BB%8Aのように9文字に膨らみ、15文字の日本語が135文字になります。日本語の長文を埋め込んだリンクは、プロンプトの長さより先にURLの見た目が読めなくなります。
qに渡したテキストは、約14,000文字で切り詰められます。
改行はエンコードすると%0Aになります。Claude Desktop側で改行がどう扱われるかは、リンクを実際に開いて確かめてから配布するのが安全です。
動くリンクを作って試す
リンクを配る前の3手順
- 1
行き先とパラメータを決める
チャット・Code・Coworkのどれに着地させるかを決め、
q・folder・fileのうち必要なものだけを選びます。 - 2
値をエンコードして連結する
各値を
encodeURIComponentに通し、?と&でつなぎます。次の小さなスクリプトで組み立てられます。 - 3
OSのコマンドで開いてみる
下のOS別コマンドでリンクを開き、入力欄が埋まるか、フォルダーの確認ダイアログが出るかを見ます。
手順2のスクリプトは次のとおりです。実際に実行すると、1行目はCodeセッション、2行目はWindowsのパスを2つのファイル付きで渡すCoworkセッションのリンクを出力しました。
const e = encodeURIComponent;
const link = (path, params) =>
"claude://" + path + "?" + params.map(([k, v]) => `${k}=${e(v)}`).join("&");
console.log(link("code/new", [["folder", "/Users/me/repo"], ["q", "失敗しているテストを直して"]]));
console.log(link("cowork/new", [
["folder", "C:\\Users\\me\\docs"],
["file", "C:\\Users\\me\\docs\\notes.md"],
["file", "C:\\Users\\me\\docs\\todo.md"],
]));claude://code/new?folder=%2FUsers%2Fme%2Frepo&q=%E5%A4%B1%E6%95%97%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E7%9B%B4%E3%81%97%E3%81%A6
claude://cowork/new?folder=C%3A%5CUsers%5Cme%5Cdocs&file=C%3A%5CUsers%5Cme%5Cdocs%5Cnotes.md&file=C%3A%5CUsers%5Cme%5Cdocs%5Ctodo.mdfileを2回書いた形が、Coworkで複数ファイルを渡すときの書き方です。
OS別にリンクを開く
リンクの動作確認は、macOSならTerminal、WindowsならCommand Prompt、Linuxなら端末から行います。いずれも入力欄にHelloが入った新規チャットが開けば成功です。
macOSではopenコマンドに、引用符で囲んだURLをそのまま渡します。
open "claude://claude.ai/new?q=Hello"Linuxではxdg-openを使います。
xdg-open "claude://claude.ai/new?q=Hello"Windowsのコマンドプロンプトではstartコマンドを使います。公式の例も、空文字列の引用符をURLの前に挟む形です。
start "" "claude://claude.ai/new?q=Hello"組み立てでつまずきやすい点
- 空白が
+になる: JavaScriptのURLSearchParamsは空白を+に変換します。上の実行結果のとおりencodeURIComponentは%20で、公式の例も%20で書かれています。こちらに揃えると公式の例と同じ形になります - Windowsのパスもエンコードが必要:
C:\Users\meの:と\も、エンコードするとC%3A%5CUsers%5Cmeになります。上のCoworkの出力例がその形です。パスも値の一部なので、手書きせずスクリプトを通します
自作ツールに埋め込む例
READMEやWikiに「Open in Claude Code」的なリンクを置く場合、Markdownの通常のリンク記法にclaude://をそのまま渡すだけで埋め込めます。
[このリポジトリをClaude Codeで開く](claude://code/new?folder=%2FUsers%2Fme%2Frepo&q=Review%20open%20PRs)社内ダッシュボードやランブックにボタンを置くなら、<a href="claude://...">のような通常のアンカータグで足ります。JavaScriptから動的に組み立てるなら、前節のスクリプトのように各値をencodeURIComponentでエンコードします。
リンクを踏んだだけでは、フォルダーの採用もプロンプトの送信も完結しません。folderを指定するCode・Coworkセッションでは確認ダイアログが挟まり、チャットのqは入力欄に下書きとして入ったうえで、内容を確認してから送信する流れです。チャットでは、知らない配布元のリンクでもプロンプトを読んでから送るかどうかを選べます。
モバイル版・claude-cli://との違い
claude://という同じプレフィックスは、モバイルアプリでも使われています。iOSとAndroidの両方が応答し、他のアプリやショートカット、Webページからリンクを開けます。ただし対応する経路はCodeタブの3パターンだけで、デスクトップ版のようにチャットやプロジェクトを直接開くパラメータも、Coworkセッションを開くパスもありません。
3パターンは次のとおりです。
claude://code: Codeタブのセッション一覧を開くclaude://code/{session-id}: 既存セッションを開くclaude://code/new: 新規セッションの入力欄を開く
code/newにはqとpromptのほか、mode・repo・branchを付けられ、パラメータはすべて任意です。
modeはplanかcodeで、プランで使えないモードは無視されます。repoはowner/name形式のGitHubリポジトリで、大文字小文字は区別されません。接続済みのGitHubアカウントに無いリポジトリは無視されます。branchはrepoとセットでのみ効きます。
code/{session-id}のIDが不明なときは、セッション一覧に着地します。モバイル版でも、パラメータの値はすべてURLエンコードが必要です。
アプリが入っていない相手には、https://claude.ai/code/から始まるUniversal Linksが向きます。アプリがあればOSがアプリを起動し、無ければブラウザーでページが開きます。Codeタブへのアクセス権が無いアカウントでは、リンクは機能しません。
同じCodeでも着地先は違います。claude://codeはセッション一覧、https://claude.ai/codeは新規セッションの入力欄を開きます。
https://claude.ai/code/{session-id}なら、既存セッションを開けます。
Universal Linksでも事前入力ができます。次のURLなら、プロンプト・リポジトリ・ブランチが入った状態で開きます。
https://claude.ai/code/new?q=Fix%20the%20failing%20test&repo=anthropics%2Fclaude-code&branch=mainrepoの/も%2Fにエンコードします。
モバイル版ではfolderに加えてデスクトップ専用のfileも無視されるため、どちらを付けたリンクでも値は反映されません。
| 比較項目 | Desktop版claude:// | モバイル版claude:// |
|---|---|---|
| 新規チャット | Desktop版claude://claude.ai/new | モバイル版claude://非対応 |
| 既存チャット・プロジェクト | Desktop版claude://claude.ai/chat/{id} / claude.ai/project/{id} | モバイル版claude://非対応 |
| Codeセッション | Desktop版claude://code/new(folder・file対応) | モバイル版claude://code/new(repo・branch対応、folder・fileは無視) |
| Coworkセッション | Desktop版claude://cowork/new | モバイル版claude://非対応 |
Claude Codeのターミナル(CLI)にはclaude-cli://という別系統のURLスキームもあり、こちらはClaude Code Deep Linksで解説しています。claude://はアプリ内の画面を開くための仕組みで、claude-cli://はターミナルの新規セッションを開くための仕組みです。登録されるハンドラーもパラメータの仕様も別物なので、URLを組み立てる前に、対象がアプリなのかターミナルなのかを決めておきます。
社内向けのテンプレートを整備するなら、読者がデスクトップアプリ・モバイルアプリ・ターミナルのどれを使っているかでプレフィックスを変えます。1つのボタンに複数の候補を並べるより、配布先ごとに別々のリンクを用意したほうが、踏んだ相手が迷わず目的の画面に着地します。
まとめ
デスクトップ・モバイル・ターミナルのどれに向けたリンクかで、使えるパスとパラメータが変わります。
Claude Desktop本体のインストールや基本設定はClaude Desktopとはにまとめています。