Live・実践から記録 automationdiary.com
RSSフィード 26 · 07 · 2026

rm -rf が私のClaude Code環境について教えてくれたこと

私はClaude Codeの環境全体を一つのコマンドで削除してしまいました。再構築は監査になり、実際に生き残ったものの公開テンプレートになりました。

三日前、私はターミナルに rm -rf ~/.claude と、意図的に打ち込みました。キャッシュを掃除しているつもりでした。実際にはキャッシュを掃除していたのではありませんでした。Claude Codeの運用レイヤー全体を削除していたのです。グローバル設定ファイル、蓄積された約六十件のメモリファイル、四つのカスタムエージェント、これまでに作ったすべてのスラッシュコマンド、そしてセッションを自動的に自分のノートへ書き込むフックです。数ヶ月分の蓄積された運用ノウハウが、エンターキーを押す一瞬で消えました。

この一文が意味することを正確に言っておきたいと思います。「運用ノウハウ」という言葉は、実際に失うまでは抽象的に聞こえるからです。これは文書のフォルダではありませんでした。あるツールを自分の働き方に合わせて調教した、その積み重ねの形そのものでした。どのタスクをどこにルーティングするか、自分の繰り返しの間違いは何か、毎週尋ねるような質問に対する良い答えとはどういうものか。そのどれもモデルの重みの中には存在しません。すべてがそのディレクトリの中にありました。そして私は一度もバックアップを取っていませんでした。

しかし、この話で本当に重要なのは、削除そのものではありません。何が生き残ったかです。

私を救ったのは地味なレイヤーだった

二つのことが、私をすべて失うことから救ってくれました。第一に、別のウィンドウでClaude Codeのセッションがまだ開いており、そのセッションは削除が起きる前にメモリインデックスをコンテキストに読み込んでいました。そのため、六十件のメモリファイルの一行要約は、ファイル自体が消えた後も会話のトランスクリプトの中に残っていました。第二に、そしてより重要なことに、それらのメモリファイルが指し示していた本当に永続的な知識は、そもそも ~/.claude の中には存在していませんでした。それはプレーンなマークダウンのノートボルトの中に生きていました。設定ディレクトリは単なるポインタ、インデックス、本体の上に載った便利レイヤーに過ぎなかったのです。

だから、私の環境の中で賢い部分、つまりメモリファイル、カスタムエージェント、スラッシュコマンドは、このツールのために特別に組み立てたものなので、瞬時に完全に死にました。一方で地味な部分、つまり特殊なフォーマットも、特定のソフトウェアが今後も存在し続けるという依存もない、フォルダの中のプレーンテキストファイルは、何も気づきさえしませんでした。私は ~/.claude を軌道上から消し去ることもできたはずで、それでもボルトは火曜の朝、何事もなかったかのようにそこにあったでしょう。

これが、私がずっと考え続けている非対称性です。カスタム指示、メモリシステム、エージェント設定、その月のツールが何と呼んでいようと、何らかのAIワークフローを組み立てる人の多くは、コードは執拗にバージョン管理する一方で、AIにどう振る舞うかを教えているレイヤーをバージョン管理しようとは一度も考えません。「コードをバックアップする」は反射になっています。しかし「AIの運用レイヤーをバックアップする」はまだ誰の中にも反射化していません。このツール群がまだ新しすぎて、インフラだと感じられないからです。設定のように感じられます。設定はバックアップしません。

しかしこれは設定ではありませんでした。ツールを訂正し、好みを教え、繰り返さなくて済むようにルールを書き留めた、あらゆるセッションの複利的な成果でした。設定は静的です。これは蓄積されたものでした。そして蓄積されたものこそ、バージョン管理していなかったことを最も後悔するものです。仕様から再生成することはできず、それを生んだあらゆる訂正をもう一度経験するしかないからです。

壊滅的な削除は、無料で受けられる最高の監査になる

もう一つ予想していなかったことがあります。再構築が、自分が「実際に何を作っていたか」ではなく「作ったつもりだったもの」を直視させたことです。静かな蓄積は劣化を隠します。クラッシュは全行を読ませます。

復元したグローバル設定ファイルは8.5KBから6.5KBになりましたが、その過程で一つのルールも失いませんでした。実際に働いているルールの周りにあった余分な部分を削っただけです。このファイルはそのサイズから想像する以上に重要です。一度だけ読み込まれるものではないからです。私が実行するあらゆるセッションとともに出荷されます。そこに書かれた余分な一文はすべて、そのセッションがそのルールを必要としているかどうかにかかわらず、あらゆる会話に課される、永遠の税金です。そのようなファイルの肥大化は、気づいて直す一回限りのコストではありません。どの請求書にも項目として現れない、繰り返し発生する課金です。トークンのオーバーヘッドは明細項目として表示されるわけではなく、わずかに悪く、わずかに遅い回答として現れ、何百ものセッションにわたって目に見えないまま複利で積み上がっていき、最終的にファイル全体を最初から最後まで読むまで気づきません。それこそが、ファイルを失ったことが私に強制したことです。

スキル自体も自らの劣化を露呈しました。三つのスキルは、もはや存在しないスラッシュコマンドを参照していました。いつからか静かに抱えてきたリンク切れです。壊れた参照を持つスキルはエラーを吐かず、ただ静かに性能を落とすだけなので、誰も気づきませんでした。そして、設定の中で直接名指しされていた四つのエージェントは、ディスク上のどこにもファイルとして存在していませんでした。「見つけにくい」のではありません。存在していなかったのです。完全な自信をもって参照され、名前で呼び出され、そして不在でした。誰も文句を言いませんでした。システムの中に、それをチェックしているものが何もなかったからです。

そのどれも、自然には表面化しなかったでしょう。動いている環境をわざわざ監査しようとは思いません。動いているものは、壊れるまで放置され、壊れる頃にはチェックすべきことがあったこと自体を忘れています。削除が、最悪のタイミングで、私の代わりに監査を行ってくれました。それこそが、そのような監査が実際に起きる唯一のタイミングです。

何を再構築したか、そしてなぜそれぞれが賢さではなく正直さに基づくのか

私は同じものを再構築したわけではありません。今回の事故そのものから得た、特定の失敗モードそれぞれに対応する、三つの具体的な防御策を再構築しました。

一つ目は、最良の意味で地味です。設定ディレクトリ全体を、切り離されたgitディレクトリを使ってバージョン管理下に置きました。ディレクトリの中に普通の .git フォルダを置く代わりに、git --git-dir=~/.claude/config.git --work-tree=~/.claude を実行する三行のラッパースクリプトです。この違いは、見た目以上に重要です。~/.claude の中にある普通の .git フォルダは、他のツールにプロジェクトリポジトリとして拾われてしまうリスクや、さらに悪いことに、他のリポジトリのignoreルールの中に入れ子になって静かにスキップされてしまうリスクがあります。切り離されたgitディレクトリは、設定フォルダを他のあらゆるものから見て普通のフォルダのままに保ちながら、完全に追跡できる状態にします。プライベートなGitHubリポジトリにもミラーしています。この仕組みの価値はすべて、rm -rf が数ヶ月分ではなく git clone 一回分のコストで済むようになったことにあります。私は何も洗練されたものを作っていません。シートベルトの同等物を作っただけです。

二つ目は、グローバル設定自体の中に生きている予算配分ツリーです。コーディングタスクを安価なコーディングCLIに、リサーチの問いをグラウンディングされた検索ツールに、長文の下書きを無料枠のモデルに送るハードルーティングルールで、有料のClaudeプランはオーケストレーションと本当に難しい推論のためだけに確保します。それとあわせて、すべての回答の末尾に、どのモデルがどの部分を担当したかを明示するモデル帰属フッターをつけ、ルーティングルールがオフロードすべきだと言っている作業を有料モデルが行ってしまった稀なケースには、自己申告のフラグも表示します。ポイントは節約ではありません。もちろん節約もありますが、ポイントは、コスト規律が三週間後に月次の請求ダッシュボードから推測するものではなくなり、毎回の返信の中でリアルタイムに読み取れるものになり、複利で積み上がる前に実際にドリフトを捕まえられるようになることです。

三つ目は、実質的な内容を持つセッション、五メッセージ以上を、自動的にボルトへ書き込むSessionEndフックです。一行のログエントリーと、日付入りのノート、無料枠のモデルによる要約、手動の書き込みと突き合わせて重複がないか確認、そしてセッション終了時に決してブロックやクラッシュを起こさないよう防御的に書かれています。これが正直に言って最も大切にしているものです。今回の失敗から生まれた実際のループを閉じるからです。ナレッジベースが自分自身にフィードバックするようになりました。書き留めるのを忘れることは、もはや失敗モードではありません。システムはもう私が覚えていることに依存していないからです。

実際のファイルが欲しければ、リポジトリはこちら

再構築したシステム全体をサニタイズして公開しました。claude-code-os。CLAUDE.mdテンプレート、八つのスキル(いくつかはMatt PocockのMITライセンスのスキル作品をベースにしており、リポジトリ内でクレジットしています)、四つのモデルルーティング済みエージェント、SessionEndフック、そして切り離されたgitディレクトリのラッパースクリプトです。プロダクトではありません。三日間かけて痛い目に遭いながら、自分の環境のどの部分が本当に土台で、どの部分が装飾だったかを見つけた記録です。

もし何か思い当たるものがあれば、一度もバージョン管理したことのない設定ディレクトリ、書いた記憶はうっすらあるが何ヶ月も確認していないエージェントやコマンドなど、あなたも私と同じギャップを抱えている可能性が高く、そして何かがそれを強制するまで気づかない可能性も高いです。クラッシュを待つ必要はありません。claude-code-os リポジトリを読んで、あなたがすでに抱えているギャップを埋める部分を盗んでください。

この記事に付随するテンプレート

The Prospect Intake + Tension Brief

そのままの Obsidian テンプレートと完全なプロンプトチェーン。構造化されたインテイクノート、対比プロンプト、揺さぶりのチェックリスト。あなたの vault に入れて、次の見込み客に40分で走らせられる。

$29 近日公開
開示: このサイトの一部のリンクはアフィリエイトリンクです。そこから購入いただくと、あなたに追加費用なしで報酬を得ることがあります。実際に自分で使っているツールしか推薦せず、試してみて基準に達しなかったものについてもお伝えします。ここでの約束はそれがすべてです。

実際のワークフローをひとつ、受信箱へ、 準備ができたときに。

スケジュールなし。埋め合わせなし。スポンサードの掲載なし。あなたの10分に見合う新しい構築物ができたときだけ配信する。だいたい2〜4週間おき。

「誰にも報酬をもらわなくても書いていたであろうものしか送りません。それが終わった日、このニュースレターも終わります。」

配信頻度 あなたの10分に見合う構築物があるときだけ
New公開したばかり
2〜4週号と号の間隔
0これまでのスポンサード数