Claude Code は、設定ファイルにほんの小さなミスが一つあるだけで、エラーの理由を出さないまま完全に起動しなくなることがあります。しかもメッセージが「設定が原因だ」と教えてくれないので、ネットワークやインストールを疑って時間を溶かしがちです。
この記事では、実際に報告された「消したフォルダへの参照が残って起動できなくなる」事例を入り口に、原因の層を一つずつ切り分けて30秒〜数分で復旧する手順と、再発を防ぐ習慣をまとめます。手順の中のスクリプトは手元で実際に走らせて、壊さずに直ることを確認しています。
~/.claude/settings.local.json の permissions.additionalDirectories に、もう存在しないパスが一つでも残っていると、Claude Code は起動の途中で止まり、ツールがまったく使えなくなります(2026-06-16 に報告・macOS で確認、該当の Issue #68844)。
{
"permissions": {
"additionalDirectories": ["/some/path/that/does/not/exist"]
}
}
本来であれば「このディレクトリが見つからないので読み飛ばす」という警告だけで起動してほしいところですが、現状は警告ではなく起動そのものが失敗します。
多くの場合、自分で書いた覚えはありません。よくある経路はこうです。
- あるセッションで、作業の都合で一時的なフォルダを
additionalDirectoriesに追加する(自動で足されることもある) - 作業が終わってそのフォルダを削除する
- 次に起動したとき、設定はまだ消えたフォルダを指していて、起動に失敗する
つまり「フォルダを消したら、次の日から立ち上がらなくなった」という、原因と結果が時間的に離れた厄介な壊れ方をします。
additionalDirectories を含む設定は、複数のファイルが合成されて使われます。主に次の4か所です。
-
~/.claude/settings.json(ユーザー全体) -
~/.claude/settings.local.json(ユーザー全体・ローカル) - プロジェクトの
.claude/settings.json(リポジトリに入る) - プロジェクトの
.claude/settings.local.json(プロジェクト・ローカル)
どこに問題のパスが書かれているか分からないときは、まとめて探します。
grep -rl additionalDirectories ~/.claude .claude 2>/dev/null
見つかったファイルを手で編集してもいいのですが、有効なパスは残したまま、存在しないものだけを消したいので、次の処理を使うと安全です。バックアップ(.bak)を残し、他の設定項目には一切触れません。引数に対象のファイルを渡します。
python3 - "$HOME/.claude/settings.local.json" <<'PY'
import json, os, sys, shutil
p = sys.argv[1]
with open(p) as f: d = json.load(f)
ad = d.get("permissions", {}).get("additionalDirectories")
if not ad:
print("additionalDirectories は無し。対象外")
else:
keep = [x for x in ad if os.path.isdir(os.path.expanduser(x))]
removed = [x for x in ad if x not in keep]
if removed:
shutil.copy(p, p + ".bak")
d["permissions"]["additionalDirectories"] = keep
with open(p, "w") as f: json.dump(d, f, indent=2)
print("消した存在しないパス:", removed)
print("バックアップ:", p + ".bak")
else:
print("全部のパスが存在する。消すものは無し")
PY
手元で試した結果、存在するパスはそのまま残し、存在しないパスだけを取り除き、無関係なキーも壊しませんでした。手順1で複数のファイルが出てきたら、それぞれに対して実行します。
設定が原因の起動不能では、**書き間違い(末尾のカンマ、閉じ忘れの括弧、コメントの混入)**も第二の容疑者です。各層が正しい形式か、機械に確認させましょう。
for f in ~/.claude/settings.json ~/.claude/settings.local.json .claude/settings.json .claude/settings.local.json; do
[ -f "$f" ] && { python3 -m json.tool "$f" >/dev/null 2>&1 && echo "OK $f" || echo "壊れ $f"; }
done
壊れ と出たファイルが原因です。バックアップを取ってから直します。
今回は additionalDirectories でしたが、設定や環境変数の小さなミスで起動が止まる事例は他にもあります。理由が見えないときの定石は同じです。
-
まず疑わしい層を退避する。
settings.local.jsonを一時的にリネームして、空の状態で起動できるか試す(起動できれば、原因はその層の中にある) - 層を一つずつ戻す。どの設定を戻した瞬間に壊れるかで、犯人が分かる
-
直す前に必ずバックアップ。
cp file file.bakの一手間で、間違えても戻せる
「設定を全消し」ではなく「層を一つずつ無効化して切り分ける」のが、有効な設定を失わずに最短で直すコツです。
-
フォルダを消す・移動する前に、それが
additionalDirectoriesに登録されていないか確認して、先に設定から外す - 前のセッションが自動で足したパスは、いつの間にか古くなっている可能性が高い。定期的に手順2を流して掃除しておくと、ある日突然の締め出しを防げます
根本的には、起動時に「見つからないパスは警告して読み飛ばす」設計が望ましく、その旨は Issue でも要望が出ています。提供側の修正が入るまでは、上の手順で自衛できます。
この種の「設定や運用の小さな落とし穴で事故る」のを減らすために、危ない操作を実行の前に止めるフックや、全操作を記録する仕組みをまとめた無料のツールキットを公開しています。
- 無料の安全土台: cc-safe-setup(MIT ライセンス・危険な操作のガードと監査ログ)
また、今回のような「その月に新しく見つかった運用の落とし穴と対処」を毎月まとめて配信する便りも始めました。日々の Issue や長時間の自律運用で踏んだ罠を、症状→確認→対応の順で整理しています。 - 毎月の運用の便り: Claude Code 事故まとめ(無料・月次)
困っている人の役に立てば幸いです。設定が原因の起動不能は、落ち着いて層を切り分ければ必ず直ります。
この「設定ファイルによる締め出し」のような、起動や設定まわりの事故の切り分けと復旧を症状別にまとめたのが 事故防止本(¥800・第3章まで無料) です。無料の cc-safe-setup の hook を試して、もう一段 予防を深めたい方への手引きです。
同じ事故防止本は Kindle 版(Amazon・¥800)でも読めます。Kindle Unlimited なら追加料金なしで全文読めるので、まず無料で中身を確かめたい方はそちらが早いです。
ほかにも、800時間の運用データから、トークン消費の削減・複数ベンダー(Claude / Codex / Gemini / Copilot)の並行運用・サブエージェントの沈黙の失敗対策など、テーマ別の手引きを公開しています。気になる人は著者の本の一覧から、価格と評価を見て選べます。