Ninomae Renichi OFFICIAL
Ninomae Renichi OFFICIAL - https://ninomae-renichi.com/
Claude CodeAI活用開発環境デスクトップアプリ

Claude Codeデスクトップ版で本当に使うコマンド — 効かないもの、UIに変わったもの、Desktopにしかないもの

Claude Codeのデスクトップ版を開いて、ターミナル版の解説記事どおりに/permissionsと打つと、「isn't available in this environment」と返ってきます。Shift+Tabで権限モードを切り替えようとしても、何も起きません。デスクトップ版はCLIと同じエンジンで動いているのですが、コマンドの効き方はけっこう違います。この記事では、効かないコマンドを先に潰したうえで、UIに置き換わったもの、そしてDesktopにしかなくて実際に得をするものを順に見ていきます。公式ドキュメントに書かれている範囲だけを扱い、書かれていないことは「不明」と書きます。

デスクトップアプリのウィンドウにチャット・差分・ターミナルのペインが並び、プロンプト欄からスラッシュコマンドの一覧が開いているイラスト

前提: 同じエンジン、違うのは入口。まず「/」を押す

デスクトップアプリにはChat・Cowork・Codeの3つのタブがあり、開発に使うのはCodeタブです。公式ドキュメントは「DesktopはCLIと同じ土台のエンジンをグラフィカルな画面で動かしている」と説明していて、同じマシンで同じプロジェクトに対してCLIとDesktopを同時に走らせることもできます。セッション履歴はそれぞれ別々に持ちますが、CLAUDE.md・MCPサーバー・hooks・skills・settingsといった設定は共有されます。

コマンドを探すときの入口は、プロンプト欄で「/」を打つことです。組み込みコマンドに加えて、自分で作ったスキルやプラグインのスキルまで一覧に出てきます。プロンプト欄の隣の「+」ボタンからSlash commandsを選んでも同じものが開きます。まずここを開いて、自分の環境で何が並ぶかを見るのが確実です。というのも、後述するとおり、個々のコマンドがDesktopでどう振る舞うかは公式ドキュメントに網羅的には書かれていないからです。

この記事で「Desktopで使える」と書いているのは、公式のデスクトップ関連ページか、そのコマンド自身のページに明記があるものだけです。ターミナル向けのページにしか書かれていない操作は、Desktopでも同じとは限らないので、そう分かるように書き分けます。

効かないコマンドを先に潰す — ターミナル専用ダイアログ

いちばん引っかかるのがここです。公式ドキュメントは「ターミナルで対話パネルを開く組み込みコマンドは、Codeタブでは挙動が変わる」と明記しています。具体例も2つ挙がっています。ひとつは、引数の形を持たないコマンド。/permissionsのようなものは「isn't available in this environment」と返ってきて何も起きません。もうひとつが/configで、こちらはSettings → Claude Codeを開くものの、コマンドの後ろに書いたテキストは無視されます。つまり/config theme=darkと打ってもテーマは変わりません。

対処法もドキュメントに書かれています。権限ルールや設定は設定ファイルを直接編集するか、スタンドアロンのCLIから同じコマンドを実行してください。前回書いたauto modeの記事で扱ったautoMode.environmentのような設定も、結局は~/.claude/settings.jsonを直接触ることになります。Desktopは「設定をコマンドで変える」道具ではない、と割り切ったほうが早いです。

では逆に、何が使えるのか。公式のデスクトップページがプロンプト欄で打つものとして名指ししているのは/compactと/btwの2つで、これに、コマンド自身のページでデスクトップアプリ対応が明記されている/goalが加わります。この3つは後の節で扱います。それ以外の組み込みコマンドについては、動くとも動かないとも書かれていないのが正直なところです。試すなら「/」の一覧に出てくるかどうかが手がかりになります。

デスクトップ版でのコマンドの3分類。プロンプト欄で使えるものは/btwと/compactと/goal。ターミナル専用ダイアログのものは/permissionsが「isn't available in this environment」と返り、/configは設定画面を開くが引数を無視する。UIが担当するものは権限モード・モデル選択・セッション再開・プラグイン・MCPサーバー・セッション名の変更
「使えない」ではなく「担当が別にいる」ものが多い

ターミナルの操作はこう置き換わる — ショートカットとCLIフラグ

ターミナル版でいちばん有名な操作であるShift+Tabによる権限モードの切り替えは、Desktopでは効きません。公式ドキュメントは「これらのショートカットはCodeタブ専用で、ターミナル版のインタラクティブモードのショートカット、たとえば権限モードを切り替えるShift+Tabは、Desktopには当てはまらない」と明記しています。代わりに使うのがCmd+Shift+M(WindowsはCtrl+Shift+M)で開く権限モードのメニューです。

覚え方としては、Cmd+/(WindowsはCtrl+/)を押せば使えるショートカットが全部出てきます。ひとつだけ注意があって、プラットフォームで置き換えが効かないキーがあります。セッションの切り替え(Ctrl+Tab)、ターミナルペイン(Ctrl+`)、表示モードの切り替え(Ctrl+O)の3つは、macOSでもCtrlのままです。

起動時のCLIフラグにも対応表があります。--modelは送信ボタン隣のドロップダウン、--resumeと--continueはサイドバーのセッションをクリック、--permission-modeはモードセレクタ、--verboseは表示モードのVerbose。一方で--printや--output-formatには対応するものがなく、公式ドキュメントは「Desktopは対話専用」と書いています。スクリプトや自動化をしたいならCLIを使ってください、という切り分けです。

表示モードは意外と効きます。Normalはツール呼び出しを要約に畳んだ表示、Verboseは読んだファイルも含めた全ステップ、Summaryは最終的な回答と変更点だけ。ドキュメントは「なぜその動きをしたのか調べるときはVerbose、複数セッションを回して結果だけ流し見したいときはSummary」と使い分けを書いています。Ctrl+Oで順に切り替わります。

デスクトップ版Codeタブの主なキーボードショートカット。ショートカット一覧はCmd+/、新しいセッションはCmd+N、セッション切り替えはCtrl+Tab、サイドチャットはCmd+セミコロン、差分ペインはCmd+Shift+D、ターミナルペインはCtrl+バッククォート、権限モードのメニューはCmd+Shift+M、表示モードの切り替えはCtrl+O。WindowsはCmdをCtrlに読み替えるが、Ctrl+Tab・Ctrl+バッククォート・Ctrl+Oは両方のOSでCtrlのまま
ターミナル版のShift+Tabは効かない。権限モードはCmd/Ctrl+Shift+Mから

会話とコンテキストの手入れ — /btw と /compact

デスクトップページが名指しで挙げている2つのコマンドが、そのまま実用的です。ひとつめが/btw。サイドチャットを開くコマンドで、Cmd+;(WindowsはCtrl+;)でも開きます。サイドチャットはそこまでの本スレッドの内容を全部読める一方、やり取りした内容は本スレッドに戻りません。「このコードの意図を確認したい」「この前提で合っているか聞きたい」を、進行中の作業の文脈を汚さずに済ませられます。ローカル・SSH・WSLのセッションで使えます。なお保存はされないので、アプリを閉じたら戻れません。

ふたつめが/compact。コンテキストが埋まると自動で要約されて作業は続くのですが、その前に自分のタイミングで要約させて空きを作るコマンドです。デスクトップページはセッション管理の節でこれを案内しています。いまどれくらい使っているかは、モデル選択の隣にある使用量リングをクリックすると見られます。コンテキストの使用量はセッションごと、プラン側の使用量はすべてのClaude Code環境で共通、という区別も書かれています。

細かいところでは、実行中の軌道修正も覚えておくと効きます。Claudeが動いている最中でも、修正を打ってEnterを押すと、実行中のアクションを止めずに送れます。Claudeは今のアクションが終わった時点でそれを読み、次の一手から調整します。完全に止めたいときは停止ボタンです。「即座に中断する」と「止めずに向きを変える」が別の操作として用意されているので、方向がずれてきたときに作業を捨てずに済みます。

ターンごとの確認をなくす — /goal

/goalは、公式ドキュメントに「非対話モード、デスクトップアプリ、リモートコントロールで動く」と明記されている数少ないコマンドです。完了条件を渡すと、1ターン終わるごとに小さくて速いモデルが条件を満たしたかを判定し、まだなら勝手に次のターンを始めます。終わるのは、条件が満たされたとき、評価モデルが「達成不可能」と判断したとき、自分で解除したとき、そして自分で直さないと解消しないエラー(認証の失敗・クレジット残高切れ・自動圧縮で解消できなかったコンテキスト超過・モデルが利用できない)でターンが失敗したときです。レート制限や過負荷のような一時的なエラーではゴールは維持されます。

前回書いたauto modeとは役割が違います。auto modeは1つのターンの中でツール呼び出しの確認を消すもので、ターンが終われば止まります。/goalはそのターンの区切りを越えて次を始めさせるものです。ドキュメントも「両者は補完的」と書いていて、実際/goalは権限モードを変えないので、Manualのままだと、設定でまだ許可していないツール呼び出しのたびに確認が入って止まります。放っておいて進めたいならauto modeと組み合わせるのが前提になります。

条件の書き方にコツがあります。評価モデルはツールを呼びません。会話に出てきた内容だけで判定します。だから「test/authのテストが全部通る」は成立します。Claudeがテストを走らせれば結果が会話に残るからです。逆に、Claudeの出力に現れないことを条件にすると永久に満たされません。条件は4,000文字まで、1セッションに1つ。止め時を決めたいなら「or stop after 20 turns」のように条件文の中にターン数や時間を書き込みます。

そしてDesktopならではの差があります。ターミナル版では認証の失敗がゴールを解除する4つの原因の1つなのですが、デスクトップアプリ・VS Code拡張・クラウドセッションのように「ホストが認証を管理している」環境では、ゴールは解除されません。ホスト側が勝手にアクセスを回復するからです。長時間まわす用途では、Desktopのほうが途中で落ちにくい、という言い方ができます。

プロンプト欄に打つ

/goal all tests in test/auth pass and the lint step is clean, or stop after 20 turns

/goal            # 引数なしで状態を見る(条件・経過時間・ターン数・トークン消費)
/goal clear      # 解除。stop / off / reset / none / cancel も同じ
/goalの回り方。条件を設定するとすぐ1ターン目が始まり、ターンが終わるたびに評価モデルが判定する。まだ満たされていなければ次のターンへ、満たされたか達成不可能と判断されればゴールは解除される。評価モデルはツールを呼ばないため、会話に現れた内容だけで判定する
auto modeがツール単位の確認を消し、/goalがターン単位の確認を消す

差分の行にコメントを書いて、そのまま直させる

Claudeがファイルを変更すると、追加行と削除行の数が「+12 -1」のような形で出ます。これをクリックすると差分ビューが開き、左にファイル一覧、右に変更内容が並びます。ここからがDesktop固有です。差分の任意の行をクリックするとコメント欄が開くので、指摘を書いてEnterを押します。これでその行のコメントが1件追加されます。同じ要領で複数の行に足していき、最後にCmd+Enter(WindowsはCtrl+Enter)でまとめて送ると、Claudeがそれを読んで直し、結果がまた新しい差分として返ってきます。Enterで追加、Cmd/Ctrl+Enterで送信、と2段階になっている点に注意してください。

コードレビューでプルリクエストに行コメントを付けるのと同じ操作を、コミット前にその場でやれる、という体験です。ターミナル版の資料にはこれに当たる記述がありません。文章で「38行目のnullチェックが抜けている」と説明する手間が丸ごと消えるので、細かい修正が続く場面ほど効きます。

同じ差分ビューの右上には「Review code」ボタンがあります。押すとClaude自身が差分を評価して、インラインで指摘を残します。ドキュメントによると見るのは「コンパイルエラー・明確なロジックの誤り・セキュリティ上の脆弱性・分かりやすいバグ」で、スタイルや整形、もともとあった問題、リンターが拾うようなものは指摘しない方針です。自分でレビューする前に一度通しておくと、機械的な見落としを先に潰せます。

プルリクエストを出したあとはCIのステータスバーが出て、Auto-fixを有効にすると失敗したチェックをClaudeが読んで直しにいきます。Auto-mergeを有効にすると全部通った時点でsquashでマージします。ただしAuto-mergeはGitHubリポジトリ側で先に自動マージを有効にしておかないと動きません。あとPR監視まわり全体がGitHub CLI(gh)のインストールと認証を前提にしています。

アプリ内で回す定期タスク(Routines)と、走らない3つの理由

サイドバーのRoutinesから、ローカルで動く定期タスクを作れます。New routine → Localで、Name・Description・Instructions・Scheduleを埋めます。ここで見落としやすいのが作業フォルダで、これを選ばないと保存できません(まだ信頼していないフォルダなら、保存前に信頼するか聞かれます)。Instructions欄には権限モードとモデルのピッカーも付いています。ScheduleはManual・Hourly・Daily(既定は午前9時)・Weekdays(土日を飛ばす)・Weeklyのプリセットから選びます。なおドキュメントは定期実行の選択肢を3つ並べて比較していて、マシンが落ちていても確実に動かしたいならクラウドのタスク、ローカルのファイルやツールを使いたいならDesktopのタスク、セッション中の手軽なポーリングならターミナルの/loop、という住み分けを示しています。

プリセットにない間隔を使いたいときの抜け道も公式に書かれています。普通のセッションで日本語なり英語なりで「毎朝9時にコードレビューを走らせるタスクを作って」と頼めば作れますし、「15分ごと」「毎月1日」のようにプリセットにない指定もこの方法なら通ります。一覧・編集・一時停止も会話で頼めます。ただし削除だけは詳細ページのDeleteボタンからです。

ここからが本題で、作ったのに走らない・変な時間に走る、が起きます。理由は3つあります。1つめ、ローカルの定期タスクはアプリが開いていて、かつPCが起きている間しか走りません。スリープ中に定時をまたぐとその回は飛びます。Settings → Desktop app → GeneralのKeep computer awakeでアイドルスリープは防げますが、ノートPCの蓋を閉じればやはり寝ます。

2つめ、定時ぴったりには走りません。APIへのアクセスを散らすために数分の遅延が入ります。この遅延は決定的で、同じタスクは毎回同じずれ方をします。3つめが厄介で、スリープで取りこぼした分は直近7日以内のうち「いちばん新しい1回だけ」がキャッチアップ実行されます。6日ぶんたまっていても走るのは1回です。しかもそれが夜に走ることがあるので、午前9時のつもりのタスクが23時に動くことがあります。時刻に依存する処理を書くなら、プロンプト側に「17時を過ぎていたらスキップする」のようなガードを自分で入れてください。

運用の細かいところも押さえておくと楽です。作成時にworktreeトグルを入れると、各実行が独立したGit worktreeを持つので、手作業中のブランチを荒らされません。初回はRun nowで一度流して権限プロンプトを許可しておくと、以降の自動実行では同じツールが自動で通ります。ただし例外があって、組織がaskに設定したコネクタツールと、requiresUserInteractionが付いたMCPツールは毎回プロンプトが出るうえ「常に許可」も選べないので、これらを呼ぶ実行は毎回止まります。許可しすぎたと思ったら、詳細ページのAlways allowedパネルからタスク単位で取り消せます。プロンプト本体はディスク上のファイルなので、長くなってきたらエディタで直接書けます。

定期タスクのプロンプト本体(スケジュールやフォルダはここには入らない)

~/.claude/scheduled-tasks/<task-name>/SKILL.md

# 会話で作る場合の例
毎朝9時にコードレビューを走らせるタスクを作って
明日の15時にデプロイの確認をするよう1回だけリマインドして
dependency-audit のタスクを一時停止して
ローカル定期タスクが走らない・ずれる3つの理由。アプリが閉じているかPCがスリープしていると実行は飛ぶ。定時ぴったりではなく数分の決定的な遅延が入る。取りこぼした分は直近7日以内のうち最も新しい1回だけがキャッチアップされる
午前9時のつもりのタスクが夜に走ることがある。プロンプト側にガードを書く

まとめ: Desktopは「打つ」より「押す」道具

整理すると、Desktopで実際に打つコマンドは多くありません。会話を汚さずに聞く/btw、コンテキストを空ける/compact、ターンを回し続ける/goal。この3つが公式に裏の取れる中心で、残りはUIに移っています。権限モードはセレクタ、モデルはドロップダウン、セッションの再開はサイドバー、プラグインとMCPサーバーは専用の画面です。コマンドを覚えるより、Cmd+/でショートカット一覧を一度眺めるほうが早いと思います。

そのうえでDesktopを選ぶ理由になるのは、差分の行コメントと、アプリ内で回す定期タスクです。行コメントの手順はデスクトップのページにしか書かれていません。定期タスクのほうは、公式の比較表がCLI側の対応物としてcronジョブとCIパイプラインを挙げているので「Desktopにしかない」わけではありませんが、アプリの中でスケジュールを組んで実行まで完結する形はDesktop固有です(クラウドのroutineはCLIの/scheduleからも設定できます)。ほかにも同じ比較表は、画像やPDFの添付をCLIでは使えない機能として挙げています。逆にスクリプトや自動化が要るなら--printのあるCLI、という住み分けは公式ドキュメント自身がはっきり書いています。両方を同じマシンの同じプロジェクトで同時に動かせるので、どちらかに寄せる必要もありません。

最後に注意をひとつ。この記事はDesktop関連のページと、各コマンド自身のページに明記があるものだけを扱いました。/rewindや/resumeのようにターミナル版では有名なコマンドでも、Desktopでどう動くかは公式ドキュメントに書かれていません。動くかもしれませんが、確認できていないので書きませんでした。気になるものはプロンプト欄で「/」を押して、自分の環境の一覧に出てくるかを見てみてください。

よくある質問

Q. デスクトップ版で/permissionsが使えません

仕様です。公式ドキュメントは、ターミナルで対話パネルを開く組み込みコマンドはCodeタブでは挙動が変わると明記していて、/permissionsのように引数の形を持たないものは「isn't available in this environment」と返します。権限ルールを変えたいときは設定ファイル(~/.claude/settings.jsonやプロジェクトの.claude/settings.json)を直接編集するか、スタンドアロンのCLIから同じコマンドを実行してください。/configはSettings → Claude Codeを開きますが、後ろに書いたテキストは無視されるので、/config theme=darkのような書き方は効きません。

Q. Shift+Tabで権限モードが切り替わりません

デスクトップ版のショートカットはCodeタブ専用のもので、ターミナル版のインタラクティブモードのショートカットは当てはまりません。Shift+Tabはその代表例だと公式ドキュメントが名指ししています。デスクトップでは送信ボタンの隣のモードセレクタを使うか、Cmd+Shift+M(WindowsはCtrl+Shift+M)で権限モードのメニューを開いてください。使えるショートカットの一覧はCmd+/(WindowsはCtrl+/)で出ます。

Q. デスクトップ版とCLIで設定は共有されますか?

設定は共有されます。公式ドキュメントによると、プロジェクトのCLAUDE.mdとCLAUDE.local.md、~/.claude.jsonや.mcp.jsonのMCPサーバー、hooksとskills、~/.claude/settings.jsonの権限ルールなどはどちらからも読まれます。ただしセッション履歴は別々で、Desktop・CLI・VS Code拡張がそれぞれ独自に持ちます。なおDesktopはclaude_desktop_config.jsonのMCPサーバーもローカルのCodeタブセッションに読み込みますが、スタンドアロンのCLIはこのファイルを読みません。

Q. 定期タスクを作ったのに走りません

ローカルの定期タスクは、アプリが開いていて、かつPCが起きている間しか走りません。スリープ中に予定時刻をまたぐとその回はスキップされます。Settings → Desktop app → GeneralのKeep computer awakeでアイドルスリープは防げますが、ノートPCの蓋を閉じるとやはりスリープします。タスクの詳細ページでReview historyを開くと、スキップされた実行にホバーして理由(PCがスリープしていた、前回の実行がまだ動いていた、他の定期タスクが実行中だった)を確認できます。PCが落ちていても走らせたいなら、Desktopのローカルタスクではなくクラウドのroutinesを使ってください。

Q. /goalとauto modeはどちらを使えばいいですか?

役割が違うので、長い作業では両方使うことになります。auto modeは1つのターンの中でツール呼び出しごとの確認を分類器に任せるもので、ターンが終われば止まります。/goalは完了条件を渡して、条件が満たされるまでターンをまたいで動き続けさせるものです。公式ドキュメントも両者を補完的だと書いています。/goalは権限モードを変えないので、Manualのままだと、設定でまだ許可していないツール呼び出しのたびに確認を求められて止まります。放置して進めたいならauto modeと組み合わせてください。

Q. デスクトップ版で/rewindや/resumeは使えますか?

公式ドキュメントに記載がないため、この記事では扱っていません。チェックポイントやセッション管理のページはターミナル版を対象に書かれていて、デスクトップアプリやCodeタブへの言及がありません。セッションの再開についてはDesktopに別の経路があり、サイドバーのセッションをクリックすると再開できます(CLIの--resumeや--continueに相当するもの、と公式の対応表に書かれています)。セッション名の変更もアプリ内のUIから行います。