08 設定ファイルプログラムの動作を決める設定値を書いたファイル。コード本体を書き換えずに、設定だけ変えられるようにする — 全設定の解説
~/.claude/CLAUDE.md
全プロジェクト共通"] L2["Layer 2: プロジェクト
repo/CLAUDE.md
プロジェクト固有"] L3["Layer 3: ディレクトリ
repo/dir/CLAUDE.md
特定ディレクトリ"] L3 -->|"上書き"| L2 L2 -->|"上書き"| L1 style L3 fill:#e8f5e9 style L2 fill:#fff3e0 style L1 fill:#e3f2fd
設定の3層構造
Claude Codeの設定は 3つのレイヤー で構成される。上のレイヤーほど優先度が高い。
Layer 3: ディレクトリ固有
<repo>/<dir>/CLAUDE.md
↓ (上書き)
Layer 2: プロジェクト固有
<repo>/CLAUDE.md
↓ (上書き)
Layer 1: グローバル(全プロジェクト共通)
~/.claude/CLAUDE.md
CLAUDE.md
<a id="claude-md-globグロブ。ファイル名を「*(任意の文字列)」等のワイルドカードで指定する書き方。「*.md」=すべてのmdファイル、のような使い方al"></a>Layer 1: グローバルCLAUDE.md
全プロジェクトで共通するルールを記述。
- 場所:
~/.claude/CLAUDE.md - 内容: 言語設定、LLM利用ポリシー、セキュリティルール、コーディング原則、SSOT参照
- トークンAIにとっての「文字数」のようなもの。AIは文章をトークンという小片に区切って処理する。課金や入力上限(コンテキストウィンドウ)はこの単位で数えられる: ~2.4k(常にロードされる)
グローバルCLAUDE.mdに含まれるもの:
- 日本語回答ルール
- モデルルーティング(上位モデル → バランス型 → 軽量型)
- 使用モデル表示ルール
- タスク切り替え時の記録ルール
- セキュリティルール(APIApplication Programming Interface(エーピーアイ)の略。あるプログラムの機能を、別のプログラムから呼び出せるようにした「窓口」キー非表示等)
- コーディング原則
- SSOT(共通知識ベース)の参照
- セッションClaude Codeの1回の対話単位。起動から終了までの会話と作業状態のこと。長く使うと内容が混ざるため、トピックの区切りで新セッションに引き継ぐ運用をするタイトルの日本語生成ルール
- 実行環境の注意(Windows + WSL2の2層構造 — Cron等は
wsl bash -c経由必須)
補足: デスクトップアプリのUI言語について
Routines画面などのアプリ組み込みUIはCLAUDE.mdでは制御できない(アプリ側の仕様「どう動くべきか」の取り決め。仕様書=要件と動作の定義を書いた文書)。
制御できるのはAIが生成するテキスト(セッションタイトル・返答など)のみ。
<a id="claude-md-project"></a>Layer 2: プロジェクトCLAUDE.md
プロジェクト固有のルールを記述。
- 場所:
<repo>/CLAUDE.md - 内容: プロジェクトの構造、使用技術、テスト方法、ビルドソースコードから、実行可能な完成品を組み立てることコマンドターミナルに入力してコンピュータに与える一行の指示。lsやcdのように『プログラム名+補足指定』で構成される
- 作成方法:
/initコマンドで自動生成、または手動作成
Layer 3: ディレクトリフォルダのこと。ファイルを階層的に整理する入れ物。Linux系ではフォルダをディレクトリと呼ぶのが普通CLAUDE.md
特定ディレクトリのルール。必要な場合のみ使用。
- 場所:
<repo>/<dir>/CLAUDE.md - 内容: そのディレクトリ特有の規約
settings.json
<a id="settings-json"></a>グローバル設定: ~/.claude/settings.json
Claude Codeの動作を制御するメイン設定ファイル。
主要セクション:
{
"permissions": {
"allow": ["Bash(npm test)", "Read"],
"deny": ["Bash(rm -rf)"],
"ask": ["Bash(git worktree add:*)"]
},
"hooks": {
"PreToolUse": [...],
"PostToolUse": [...],
"PostToolUseFailure": [...],
"SessionStart": [...],
"Stop": [...],
"Notification": [...]
},
"mcpServers": {
"brave-search": { ... },
"github": { ... },
"playwright": { ... },
"context7": { ... },
"discord": { ... },
"mermaid": { ... }
},
"env": {
"ANTHROPIC_API_KEY": "(直接書かない — ~/.secrets.envから注入)"
},
"model": "opus",
"effortLevel": "medium",
"worktree": { "baseRef": "fresh" },
"statusLine": { "type": "command", "command": "..." },
"autoDream": { "enabled": true, "intervalHours": 24 }
}
フックの種類と用途
| フック | タイミング | 主な用途 |
|---|---|---|
| PreToolUse | ツール実行前 | 危険コマンドのブロック複数の処理が同時に同じ対象を触って衝突するのを防ぐ「鍵」の仕組み。鍵を持っている間は他の処理は待つか諦める・安全確認 |
| PostToolUse | ツール実行後 | 実行結果のログ記録・SSOT記録トリガー・設定ファイル同期 |
| PostToolUseFailure | ツール実行失敗時 | 失敗時のログ記録(atuin連携等) |
| SessionStart | セッション開始時 | 環境変数プログラムの外側(OS側)で設定する値の入れ物。プログラムを書き換えずに設定を切り替えられる。APIキー等の秘密の値はソースコードに直書きせずここに入れるのが安全な定石の注入(~/.secrets.env)・SSOT日記読込・バックログ7日経過タスク自動確認・セッション数サマリー表示・設定ファイル同期・INDEX自動更新・SKILL_CATALOG自動生成(generate-skill-catalog.py)・ssot-check日次トリガー(check-ssot-check-staleness.sh・前回実行が前々日以前なら当日実行を指示・2026-08-14)・バナー集約(startup-banner.sh・各hookClaude Codeの特定のタイミング(ツール実行前後・セッション開始時等)で自動処理を差し込む仕組み。「保存前にチェック」「終了時に記録」等を機械的に強制できるのステータスを /tmp/claude-startup/ 経由で集約し1枚のバナーに統一・層1読込検証つき・2026-08-25) |
| SessionStart hook圧縮 | 2026-07-12追加 | トレンド・候補・bkは「指示がある時のみ展開」に変更(常時15KB相当=6K〜10Kトークン圧迫を解消・コンテキストリミット多発対策) |
| Stop | セッション終了時 | セッションログの保存・ハンドオフ生成・ガイド更新キュー待ち行列。依頼された処理を順番に並べて、前から順に消化していく仕組みの記録・スキルClaude Codeで「特定の作業手順」をパッケージ化したもの。SKILL.mdに手順を書いておくと、対応する場面でAIがその手順を読み込んで従う。経験を再利用する仕組み同期・クリーンアップ |
| Notification | 通知時 | エラー・ブロック時のDiscord通知 |
その他の設定項目
| 項目 | 説明 |
|---|---|
model |
デフォルト指定がない時に自動的に使われる初期値・初期設定のことモデル(opus, sonnet, haiku)。glm-5.3運用では各階層に割当 |
effortLevel |
推論の深さ(low, medium, high)。/effort で変更可能 |
worktree.baseRef |
worktreeのベース参照(fresh = 最新のorigin/default, head = 現在のHEAD) |
statusLine |
ターミナル文字だけでパソコンと対話する画面。コマンドを打ち込むと結果が文字で返ってくる。Claude Code CLIはここで動くのステータスバーに表示する内容(コマンド実行結果を表示)。以下に詳細説明あり |
autoDream |
自律思考モード(定期的にバックグラウンドで推論を実行) |
enabledPlugins |
有効なプラグイン本体に後から差し込んで機能を足す追加部品。Claude Codeにもプラグイン機構があるの一覧 |
language |
出力言語(japanese 等) |
theme |
テーマ(dark, light) |
<a id="statusline"></a>statusLine の詳細
画面下部にLLM名・コスト・作業量・コンテキスト残量・会話サイズを表示する。glm-rate-proxy の実動作状態を反映し、peak時間帯のフォールバックメインの手段が使えなくなった時に、自動的に予備の手段へ切り替える仕組み。「本命が失敗したら副えに任せる」二段構えもバッジで示す。
- 設定:
{"type": "command", "command": "bash ~/.claude/scripts/llm/llm-status.sh"} - スクリプト自動実行できる小さなプログラム。手順を書いたテキストファイルの形をしている:
~/.claude/scripts/llm/llm-status.sh - 表示例(通常):
🟡[GLM] GLM-5.3 | Ctx 45% (90k/200k) | Req 8.5MB/32 | +100 -50 | 🪟e36d - 表示例(peak帯フォールバック):
🟠[peak→minimax] GLM-5.3→MiniMax-M3 | ... | 🪟e36d - 並び順(2026-08-16改): LLM名 → Ctx → Req → 作業量 → タブID。コスト($表示)は削除(
claude-costコマンドで確認)。※スマホ表示で末尾が見切れるため、モデル・コンテキストを先頭に変更(旧: タブID先頭・2026-07-23〜)
| 表示項目 | 説明 |
|---|---|
🪟XXXX(末尾) |
タブ識別子(WT_SESSION先頭4桁・/clearで不変・4タブ運用での区別。未設定時はsession_id先頭4桁) |
| LLMバッジ + モデル名 | 🟡[GLM](通常)/ 🟠[peak→minimax](peak帯フォールバック中)+ モデル名。glm-rate-proxy の /proxy/status から実状態を取得 |
Ctx XX% (XXk/窓) |
コンテキスト窓使用率。85%赤 / 70%黄 / 他緑 |
Req XX.XMB/32 |
会話サイズ(トランスクリプト)= 32MB APIリクエスト上限の目安。30MB赤 / 27MB黄 / 他緑。30MB超えで /clear 推奨 |
+N -N(末尾) |
行追加/削除(作業量・重要度低のため末尾) |
注意: コンテキスト使用率が高くなったら早めに /compact すること。100%に達すると /compact 自体も失敗し、新セッションが必要になる。会話サイズ(Req)は32MB API上限に縛られるため context窓とは別管理。
<a id="env-settings"></a>env(環境変数値を入れておく名前付きの箱。x = 1 のように名前に値を紐付けて、後で使い回すの注入)
env セクションで Claude Code プロセス動いているプログラム1つ1つの実体。番号(PID)で管理されるに環境変数を追加できる。APIキーは ~/.secrets.env で管理するため、ここには非機密の制御変数のみ記載する(シークレットは SessionStart フックで自動注入)。
代表的な制御変数(非機密):
| 変数名 | 値例 | 用途 |
|---|---|---|
API_TIMEOUT_MS |
1200000 |
Claude API呼び出しタイムアウト待ち時間の上限。指定時間内に応答が無ければ「失敗」とみなして打ち切る仕組み(20分) |
MCP_TOOL_TIMEOUT |
300000 |
MCPModel Context Protocol(エムシーピー)の略。AIに外部ツール(検索・GitHub・データベース等)を繋ぐための共通接続規格。USBのような「差せば繋がる」仕組みでAIの能力を拡張するツール実行タイムアウト(既定60秒→5分に延長) |
DISABLE_AUTO_COMPACT |
1 |
auto-compact無効化(パターンB運用・手動/compact可) |
CLAUDE_CODE_AUTO_COMPACT_WINDOW |
1000000 |
窓サイズ指定(※200K cap注意・下記注記) |
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC |
1 |
不要な通信(テレメトリ等)の抑制 |
glm-rate-proxy経由のルーティング変数(ANTHROPIC_AUTH_TOKEN / ANTHROPIC_BASE_URL / ANTHROPIC_DEFAULT_OPUS_MODEL 等)→ 13_glm-rate-proxy で詳述。
auto-compact制御の罠(パターンB運用): glm-5.3等のカスタムモデルは Claude Code で 200K認識される。CLAUDE_CODE_AUTO_COMPACT_WINDOW=1000000 を設定しても200Kに cap されるため無意味(statusLine表示と本体判定がズレて「1% until auto-compact」が異常早発動)。auto-compact を止めるには DISABLE_AUTO_COMPACT=1。glm-5.3 を真に1M認識させるには DISABLE_COMPACT=1 + CLAUDE_CODE_MAX_CONTEXT_TOKENS=1000000(ただし手動/compactも不可)。→ AUTO_COMPACT_WINDOW訂正・パターンB運用移行
MCP_TOOL_TIMEOUT を設定する理由: GLM-5.3等の思考型モデルは長い生成に60秒以上かかることがある。未設定だと MCP error -32001 (Request timed out) が連続発生する。glm-mcp-server.py は直列処理なので1件目のタイムアウトが2件目を巻き込む連鎖に注意。値はミリ秒単位(300000 = 5分)。→ GLM MCPタイムアウト修正
WSL CLI版でglm MCPをdisabledにする理由: WSL CLI版ではCLI本体がGLMで動作するためglm MCPは二重呼び出しになり不要。command/url を省略すると「設定不備」警告が出るため、disabled: true を設定して警告を抑制。Desktop App版では false に戻すだけで再利用可。
<a id="settings-local"></a>プロジェクト設定: <repo>/.claude/settings.json
プロジェクト固有の設定。
- 場所:
<repo>/.claude/settings.json - 内容: そのプロジェクトでのみ有効な権限・MCP・フック
- 用途: チーム共有可能な設定(
.gitignoreに含めない場合)
<a id="claude-json"></a>~/.claude.json(追加設定ファイル)
2ファイル問題: ~/.claude.json と ~/.claude/settings.json の両方が存在し、マージ分かれていた変更を1つに統合すること。ブランチで進めた作業を本体(main)に取り込む作業されてロードされる。
- どちらに書いても効果は同じ
- しかし削除する際は両方から削除する必要がある
claude mcp removeCLIコマンドを使うと両方に反映される
現場の知見: settings.json だけ手動編集してMCPサーバーを削除しても、~/.claude.json に定義が残っていれば次回起動時に復元される。削除は必ず claude mcp remove で。→ 11_現場の知見
<a id="secrets"></a>シークレット管理
APIキー等の機密情報は ~/.secrets.env に一元管理。
# ~/.secrets.env の例
MINIMAX_API_KEY=sk-xxx...
BRAVE_API_KEY=BSExxx...
GITHUB_TOKEN=ghp_xxx...
セキュリティルール
| ルール | 説明 |
|---|---|
| 会話にキー値を書かない | キー名(MINIMAX_API_KEY)はOK、値はNG |
| 設定ファイルに直書きしない | settings.jsonのenvセクションに値を書かない |
| SessionStartフックで注入 | source ~/.secrets.env で環境変数に注入 |
| 確認時はマスク必須 | grep -E "^[A-Z_]+=" <file> | sed "s/=.*/=<REDACTED>/" |
settings.jsonとの関係
SessionStartフック sync-secrets-to-settings.sh が起動のたびに ~/.secrets.env の値を settings.json へ自動注入する。
- 目的: MCPサーバーへ環境変数を渡すため(
mcpServers.xxx.envセクション) - Claude Code本体(
ANTHROPIC_AUTH_TOKEN等)はシェルユーザーとOSの間に入って、コマンド入力を受け付けて実行する程序。ターミナルで打つコマンドを実際に処理する部分環境変数でも動作するが、同フックで注入する設計に統一 - Git管理:
settings.jsonはclaude-config/.gitignoreで除外済み — GitHubには上がらない
settings.example.json の自動同期
SessionStartフック sync-settings-to-example.sh が settings.json からシークレット値をマスクして settings.example.json を生成する。
- jq優先:
jqで env 内のキー名にKEY|TOKEN|SECRET|PASSWORD|AUTH(大文字小文字区別なし)を含む値を""に置換 - python3フォールバック:
jqが利用不可の場合、python3 で同等のマスク処理を実行 - TOKENマスク:
permissions.allow内のTOKEN=<値>形式の項目(Discord Bot Token等)も汎用文字列に置換 - mcpServers: 全MCPサーバーの
env値を""にマスク
# バックアップ運用
settings.example.json ← 値マスク済み。SSOTへのバックアップはこちらのみ
settings.json ← 実体。バックアップ・出力・表示は禁止
⚠️ settings.json / .secrets.env の値を会話・ファイルに出力することは禁止。
危険コマンドのブロック
PreToolUseフック(check-command-safety.py)が以下を自動ブロック:
bash -x(デバッグ不具合の原因を特定して直すこと。ログや実行の跡を辿って、どこで期待と違う動きをしたかを突き止める作業出力で露出の恐れ)cat -A(特殊文字表示で露出の恐れ)- マスクなしの
grep(APIキー検索) - フィルタなしの
env(全環境変数表示)
設定変更の方法
| 方法 | 対象 | 例 |
|---|---|---|
/config |
モデル・テーマ等 | 対話的UI |
update-config スキル |
settings.json全般 | /update-config |
| 手動編集 | settings.json | 直接ファイル編集 |
claude mcp add/remove |
MCPサーバー | CLIコマンド |
<a id="gitignore-best-practice"></a>.gitignore ベストプラクティス(設定リポジトリ向け)
claude-config のような設定・hook・スクリプト類を管理するリポジトリでは、Auto sync / PostToolUse hook が編集系のバックアップファイルを巻き込んで commit する事故が過去に発生している(*.bak 129行混入の事例あり)。
最低限入れておく除外パターン:
# バックアップファイル(エディタ・merge・rebase 由来)
*.bak
*.orig
*~
# 既存パターン
backups/
backup-*/
教訓:hook は .gitignore を読んでくれない。.bak を作ったら .bak のまま commit される。「作らない」ではなく「無視する」設計にすること。
<a id="windows-vs-wsl"></a>Windows Desktop vs WSL CLI — 設定の違い
WSL2環境では Windows Desktopアプリ と WSL CLI の2つのClaude Codeが共存する。設定ファイル・管理系統・ツール定義のシリアライズに重要な違いがある。
💡 WSL CLI版(2026-07-02統合): 2026-06-30に「cc-musicプロファイル分離」で minimax-official/video を日常settings.jsonから除外していたが、32MB真因=glm-rate-proxy client_max_size 未設定と判明(9ac5f24fd解決)したため分離撤回。現在は minimax-official/video は日常 mcpServers で常時読込(画像/動画/音楽生成を即呼び可能)。cc-music エイリアス・cc-music-mcp.json・PreToolUse hookブロックは完全撤去(バックアップは 01_DECISIONS/claude-code/設定ファイル/ に温存)。未使用agents 8プラグイン無効化は継続。
- 効果: 日常側 約7,060tok削減(実測確認済・minimax分離分。agents 1,926tokは想定過大で実際は微小・8プラグインはagents非提供型だった)・32MBエラー(画像起因)は運用規約で予防。
- ※
ccは/usr/bin/cc(C compiler)でClaude起動エイリアスではない。日常起動はclaude直。
設定ファイルの場所一覧
| 種別 | 場所 | 役割 |
|---|---|---|
| WSL settings.json | ~/.claude/settings.json |
MCP・権限・フック(WSL側メイン) |
| WSL .claude.json | ~/.claude.json |
追加設定(settings.jsonと統合)。userスコープのmcpServersはWSL CLI版がここを読む |
| Windows settings.json | C:\Users\<user>\.claude\settings.json |
権限・フック等。⚠️2026-07-06実測時点ではmcpServersを書いてもWindows Desktopアプリ本体からは読まれなかった(下記「注意」参照・恒久的事実として鵜呑みにしない) |
| Windows .claude.json | C:\Users\<user>\.claude.json |
Windows側状態(キャッシュ一度得た結果を取っておいて、次回は同じ計算をせず使い回す仕組み。速くなるが、元のデータが変わった時の更新忘れに注意・ユーザー情報等) |
| Desktop config(候補①) | C:\Users\<user>\AppData\Roaming\Claude\claude_desktop_config.json |
⚠️2026-07-06実測時点では中身が実プロセスの起動引数コマンドや関数に渡す補足の指定。ls -la の -la の部分のように、動作を細かく指示する値と食い違っており使われていないように見えた(ただし2026-05時点では他候補と内容一致・有効に見えていた。下記「注意」参照) |
| Desktop config(候補②・2026-07-06時点で実測と一致) | C:\Users\<user>\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json |
2026-07-06実測では、Windows Desktopアプリが実際に読むmcpServers設定はここだった(MSIXパッケージ配布・インストール可能な形にまとめたソフトウェアの単位。Pythonではpipで入れる部品のことの仮想化パス)。ただしこれも将来のアプリ更新で変わりうるため「今後もここ」と決め打ちしない |
| Desktop Extensions | C:\Users\<user>\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\Claude Extensions\ |
拡張機能ソフト本体に後から足して機能を増やす追加部品。プラグインとほぼ同義(MCP serverとは別の独立管理系統) |
注意: Desktop Extensionsの場所はWindows Storeアプリパッケージの内部にあり、通常の設定フォルダからは見えない。MCP serverやplugin設定とは完全に別の管理系統。
⚠️ 候補ファイルが複数あり、しかも「どれが本物か」は時期によって変わりうる(決め打ち禁止): 2026-05時点の調査(2026-05-20_デスクトップアプリMCP-223k問題調査)では
settings.jsonとAppData\Roaming\Claude\claude_desktop_config.json(候補①)の内容が一致しており、当時はどちらも「有効」に見えていた。おそらく当時は複数の候補ファイルを手動で同時に編集していたため、どれが真の読み込み元か区別する必要が一度もなかった。2026-07-06にgeminiを候補①相当(settings.json)にだけ追加したことで初めて食い違いが表面化し、候補②(MSIXパッケージ内)が本物だと判明した。Windows Desktopアプリの内部実装設計や仕様を、実際に動くコードに作り込むこと。「実装済み」=コードとして完成している状態(配布形態・設定読み込みロジック)はアプリ更新で今後も変わりうるため、上表の「候補②が本物」という記述も恒久的な前提にしない。⚠️ 「設定したのに接続されない」時の確認手順(推測で編集しない・都度確認): アプリ内「設定 → 開発者 → ローカルMCPサーバー」パネルの「設定を編集」ボタンを押し、その時点でエクスプローラーが開く実際のファイルパスをそのまま使うのが、時期によらず通用する最も確実な方法(2026-07-06 gemini追加時に確立した手順)。詳細: 04_MCPサーバー の「設定したのに接続されない」トラブルシューティング節、事例は 2026-07-06_Windows-Desktop版Gemini-MCP真因確定-MSIXconfig特定 参照。
設定の独立性
WSL側とWindows側の設定は独立している:
- WSL側でMCP serverを削除しても、Windows Desktopアプリには反映されない
- Windows側でMCP serverを変更しても、WSL CLIには反映されない
- Desktop Extensionsは両方の設定ファイルとも別管理
<a id="windows-git-auth"></a>Windows DesktopのGitHub認証「あなたは誰か」を確認すること。パスワードや鍵で本人であることを確かめる手続き(git push失敗の対処)
WindowsとWSLはSSH鍵の置き場所も独立している。WSL側~/.ssh/id_ed25519で運用しているGitHub鍵は、Windows側C:\Users\<user>\.ssh\には存在しないため、Windows Desktop版のBashツール(Git Bash)からgit pushするとPermission denied (publickey)で失敗する。
対処(HTTPエイチティーティーピー。Webの通信で使われる基本的な約束事(プロトコル)。ブラウザとサーバー、プログラム同士のやり取りの共通言語S + GitHub CLI方式): SSH鍵をコピー・共有せず、GitHub CLI (gh) の認証情報をWindows側のみで使う。
# 1. インストール
winget install GitHub.cli
# 2. ブラウザ認証(対話操作が必要)
gh auth login --hostname github.com --git-protocol https --web
# 3. gitのcredential helperと連携
gh auth setup-git
# 4. Windows側グローバルgitconfigにURL書き換えルールを追加
git config --global url."https://github.com/".insteadOf "git@github.com:"
- 4番目の設定は
C:\Users\<user>\.gitconfigにのみ追加され、WSL側~/.gitconfig(実体は別ファイル)には一切影響しない - リポジトリ本体(
.git/configのremote URL)も変更不要。Windows側のgit実行時にだけURL解釈が書き換わる - WSL側は従来通りSSH鍵で動作し続ける(双方の動作確認済み)
当初はWSL側の鍵をUNCパス経由(\\wsl.localhost\...)で直接参照する案を実機検証し動作も確認したが、OpenSSHの権限チェックを迂回している懸念・侵害時の被害範囲拡大・将来のWindows Update等での破綻リスクをレビューで指摘され、HTTPS+gh CLI方式に切り替えた。詳細: 2026-06-30_Windows-Desktop版GitHub認証問題解決
ツール定義のシリアライズ差異(重要)
| 項目 | WSL CLI | Windows Desktop |
|---|---|---|
| MCP tools消費 | ~16-34k tokens | ~213-224k tokens |
| 倍率 | 1倍 | 6.2倍 |
| 原因 | 標準シリアライズ | Desktop内部のシリアライズ差異 |
| ユーザー制御 | settings.jsonで制御可能 | 制御不可(v2.1.142時点) |
Windows Desktopアプリは、同一のMCP構成でもCLIより6倍以上のトークンを消費する。2026年5月時点では、6回の異なる設定変更(MCP server削除・profiles無効化・plugin cache削除・marketplace削除・plugin個別無効化・Extensions削除)で検証済み。Desktop Extensionsの削除のみ-10.6kの効果があったが、残り213kはアプリ内部で固定。
Desktop Extensions
Desktopアプリ専用の拡張機能。Windows Storeアプリパッケージ内に配置される。
<a id="claude-config-venvブイエンブ。Python標準の仮想環境を作るコマンド/仕組み。プロジェクトごとにライブラリを分けてインストールできるようにする"></a>claude-config配下スクリプトのPython実行環境
claude-config リポジトリ(scripts/api/*.py 等)のPythonスクリプトは 専用仮想環境プロジェクトごとにインストールするライブラリを分ける独立したPython環境。プロジェクト間のバージョン衝突を防ぐ .venv で実行 する。
| 実行方法 | 結果 |
|---|---|
claude-config/.venv/bin/python scripts/api/gemini-audio.py |
✅ 動作(google-genai 等インストール済) |
python3 scripts/api/gemini-audio.py(システムPython) |
❌ ImportError: cannot import name 'genai' |
- 原因:
google-genaiは.venvにのみ導入。システムpython3(~/.localの namespacegoogle)にはgenaiが無い - 対策: 常に
.venv/bin/pythonを使用。pip install --userでシステム側へ入れるのは誤り(.venvに既存) - シークレット読込を前置:
set -a; source ~/.secrets.env; set +a
Claude Extensions/
├── ant.dir.ant.anthropic.filesystem/ (11ツール)
├── grafana/ (71ツール) ※不要なら削除
├── pdf-filler/ (37ツール) ※不要なら削除
├── desktopcommander/ (26ツール) ※不要なら削除
├── growthbook/ (18ツール) ※不要なら削除
├── figma/ (7ツール) ※不要なら削除
└── apify/ (?ツール) ※不要なら削除
- 管理方法: フォルダを直接削除(設定ファイルからの参照なし)
- WSL CLIからはアクセス不可
- ** filesystemのみ残す推奨**(ファイル操作に有用)
OAuthオーオースと読む。他のサービスの機能を、IDやパスワードを教えずに安全に使わせるための認可の標準規格。「○○でログイン」ボタンの裏側で動いている仕組み認証トークンの蓄積問題
Desktopアプリはセッション開始のたびに新しいOAuth認証トークンを作成し、旧トークンを削除しない。長期間使用すると100+個のトークンが蓄積される。
推奨運用(2026年5月時点)
| 用途 | 推奨環境 | 理由 |
|---|---|---|
| 日常開発 | WSL CLI | コンテキスト27%で正常動作 |
| Desktopアプリ | 軽作業のみ | 213k消費で会話制限に抵触する可能性 |
現場の知見: Desktopアプリのコンテキスト過多はAnthropicのアップデート待ち。当面はWSL CLI版をメインで使用する。→ 11_現場の知見
💡 やさしい補足(初心者向け)
- 設定は3層: 全体共通・プロジェクト固有・ローカル(自分だけ)。細かいほど優先される
- CLAUDE.md = ルールブック: 毎回読む。何をどう扱うかの決まりを書く
- settings.json = 機能設定: 追加機能・権限・自動動作を書く
- 秘密は別管理: APIキー等の重要な値は
.secrets.envに一つにまとめて、設定ファイルには書かない(漏洩防止)