2台のPCでClaude Codeの設定を同期する:gitで運べるもの、運べないもの

2台のPCでClaude Codeの設定を同期する:gitで運べるもの、運べないもの
Claude Codeを自宅とオフィスの2台で使っていると、こう思う人は多いと思います。
「片方のPCで整えたルールやメモリを、もう片方でもそのまま使いたい」
カスタムルール、コーディング規約、過去の決定事項。これらを2台で同じ状態に保ちたい。普通に考えればgitで管理すればよさそうですよね。ところがClaude Codeのファイル構造には、gitで同期できるものと、できないものがあります。境界を理解しないまま進めると「同期したつもりが、肝心のhookが反映されていない」という事故になりがちです。
この記事では、Claude Codeの設定を複数PCで同期する仕組みと、gitで運べるもの・運べないものの境界を整理します。
専門用語を先に1行ずつ噛み砕いておきます。
- CLAUDE.md=Claude Codeが起動時に自動で読む設定・ルールのファイル。「常に守ってほしい指示」を書いておく場所
- hook=特定の操作(ファイル編集の前後など)をトリガーに自動で走る処理。設定すると手作業が減る
- symlink(シンボリックリンク)=ファイルの実体は1か所に置き、別の場所からそれを指す「分身」を作る仕組み
結論:設定リポをgit管理しsymlinkで参照させる。ただしhookは別管理
要点を先に出します。
- 組織・個人の設定(ルール・ナレッジ・共有メモリ)を1つのgitリポにまとめて管理する
- 新PCでは
git cloneして、CLAUDE.mdをsymlinkで参照させる - hook・settings.json・会話ログ・自動メモリはgitで同期されないので、別途対応する
- 起動ディレクトリ(CWD)がすべての基準になる。必ずgit管理下で起動する
「設定リポをcloneすれば全部揃う」とはいかない部分があります。その境界を見ていきましょう。

gitで同期できるもの
設定を集約したリポ(仮に ~/.agent/ とします)に置けば、git pull で同期できるものは次のとおり。
- カスタムルール(
rules/) - ナレッジベース(
knowledge/wiki/) - 共有メモリ(明示的にgit管理対象にしたもの)
- エージェント定義・スキル定義
- プロジェクト横断の設定
これらを1リポにまとめ、新PCでは次のように展開します。
# 設定リポをclone
git clone git@github.com:you/agent-config.git ~/.agent
# CLAUDE.md をsymlinkで参照
ln -sf ~/.agent/CLAUDE.md ~/CLAUDE.md
日常の同期はエイリアスにしておくと数秒で済みます。
alias agent-sync='cd ~/.agent && git pull && ln -sf ~/.agent/CLAUDE.md ~/CLAUDE.md'
別PCで agent-sync を叩けば、最新のルール・ナレッジ・共有メモリが反映されます。なお、こうした設定リポをgitで運ぶ運用は、ブランチ分離で作業を並行させる発想と相性がよく、Claude Codeとgit worktreeを組み合わせる運用の延長で考えると整理しやすくなります。
gitで同期できないもの(落とし穴)

ここが本題です。次のものは、上記の設定リポには含まれず、別PCに届きません。
同期されないもの | 場所 | 影響 |
|---|---|---|
|
| hook設定が反映されない |
hook実装スクリプト |
| 自動処理が動かない |
Claude Codeプラグイン |
| プラグインが入っていない |
会話ログ |
| 過去の会話が見られない |
自動メモリ(auto-memory) |
| PC別に蓄積される |
とりわけ注意したいのが hook です。「片方のPCでhookを設定して快適になったのに、もう片方では何も起きない」というのは、hookが ~/.claude/ 側にあって同期対象外だから起きます。
対策:hookは設定リポに実体を置いてsymlinkする
hookを両PCで使いたいなら、実体を設定リポ側に置き、~/.claude/ からsymlinkを張るのが定石です。
# 実体は設定リポに
~/.agent/scripts/hooks/my-hook.sh
# ~/.claude/ からsymlink
ln -sf ~/.agent/scripts/hooks/my-hook.sh ~/.claude/scripts/hooks/my-hook.sh
これでhookの中身はgit同期され、settings.json のhook登録パスをsymlink先に向ければ、両PCで同じhookが動きます。
メモリは2系統ある
Claude Codeのメモリは、実は2系統に分かれています。
メモリ | 同期 | 用途 |
|---|---|---|
設定リポ内のメモリ( | される | 組織横断、共有OK、第三者に見せてよい情報 |
自動メモリ( | されない | PC別、個人情報・機密寄りの自動蓄積 |
この使い分けは合理的でした。機密性の高い情報(個人名・APIキー・PII)は同期されない自動メモリ側に残し、再利用したいノウハウは設定リポ側に置く。役割で線を引いておくと、後から「どっちに書くべきか」で迷いません。
「全部同期したい」なら自動メモリを設定リポにsymlinkで一元化することもできます。ただしその場合、push対象になる情報の機密度を毎回判断する必要が出てきます。PII・APIキー・個人アカウント名はpushしてはいけません。
最大の落とし穴:起動ディレクトリ(CWD)
Claude Codeで一番ハマるのが、起動ディレクトリ(CWD=コマンドを実行したときのカレントディレクトリ)がすべての基準になることです。
起動場所 | 結果 |
|---|---|
git管理下のディレクトリ | 正常(プロジェクトスコープ・メモリ保存先が機能する) |
ホームディレクトリ( | git rootがなく、プロジェクトメモリもworktreeも機能しない |
鉄則は1つ。Claude Codeは必ずgit管理下のディレクトリで起動する。ホームで起動すると、メモリの保存先が定まらず、サブエージェントのworktreeも作れず、機能不全になります。
自動メモリの保存先はCWDをエンコードしたパスになります。CWDが変わると別フォルダが作られるので、いつも同じディレクトリから起動する習慣をつけましょう。
新PCセットアップの完全手順
新しいPCでClaude Code環境を立ち上げる手順です。
# 1. ランタイム・ツール
brew install node git gh
gh auth login
npm install -g @anthropic-ai/claude-code
# 2. git identity
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
# 3. 設定リポをclone
git clone git@github.com:you/agent-config.git ~/.agent
# 4. CLAUDE.md をsymlink
cd ~/.agent
ln -sf ~/.agent/CLAUDE.md ~/CLAUDE.md
# 5. hook・settings.json は別途(symlink or 手動コピー)
# ~/.claude/settings.json のhook登録パスを設定リポ側に向ける
初回は30分ほど、以降の同期は数秒です。
持ち帰りチェックリスト:新PCで「揃ったか」を確認する

セットアップ後、本当に同期できたかを5項目で点検します。これを順に潰せば、hook未反映やCWD起因の事故を出さずに済みます。
- 設定リポを
git cloneし、git pullでルール・ナレッジ・共有メモリが最新になっている CLAUDE.mdがsymlinkで参照されている(ls -l ~/CLAUDE.mdでリンク先を確認)- hookの実体が設定リポ側にあり、
~/.claude/からsymlinkが張られている - 自動メモリは同期対象に入れていない(入れる場合はPII・APIキーの混入を毎回判断)
- git管理下のディレクトリで起動している(ホーム
cd ~ && claudeではない)
アンチパターン3つ
アンチパターン1:「設定リポをcloneすれば全部揃う」と思う
hook・settings.json・会話ログは設定リポに含まれません。とくにhookは別途symlink対応しないと、片方のPCでしか動きません。
アンチパターン2:自動メモリを無条件に全部同期する
自動メモリにはPII・APIキーが含まれることがあります。同期したいなら機密度を判断してから。一律symlinkは情報漏洩リスクになります。
アンチパターン3:ホームディレクトリでClaude Codeを起動する
cd ~ && claude はgit rootがなく機能不全になります。必ずgit管理下のディレクトリで起動しましょう。
まとめ:「運べるもの」と「運べないもの」の境界を知る
Claude Codeを複数PCで同期する原則は4つ。
- 設定(ルール・ナレッジ・共有メモリ)は1つのgitリポにまとめてpull同期
- hookは設定リポに実体を置いてsymlink(そのままでは同期されない)
- 自動メモリはPC別。機密度を判断して同期可否を決める
- 必ずgit管理下のディレクトリで起動する(CWDがすべての基準)
「git管理すれば全部同期される」という思い込みが、hook未反映やCWD起因の機能不全を生みます。何がgitで運べて、何が運べないか。この境界さえ押さえれば、複数PC環境は快適に保てます。
AIエージェントの運用設計でお困りなら
「人によってClaude Codeの挙動が違う」「便利なhookが片方のPCにしかない」「設定をチームで揃えたいが、どこまでgit管理してよいか分からない」。複数環境やチームで運用を始めると、こうした設定の同期・共有設計でつまずきがちです。
f2t.jpでは、AIエージェントの運用設計から、チーム・複数環境での設定共有の仕組みづくりまで一貫してお手伝いしています。お問い合わせフォームからご相談ください。
この記事のテーマに合うサービス:AIエージェント活用設計
AIエージェントを「使える形」まで設計する



