Claude Code と Codex を並列で動かしたときの動き: 同じファイルでも書き換えは消えない
Claude Code と Codex を同じフォルダーで同時に動かし、同じファイルに別々の関数を足させても、片方の書き換えが消えることはありませんでした。2026年11月9日に Claude Code 2.1.309 と Codex CLI 0.166.0 で確かめると、--worktree で分けた場合は作業中にはぶつからず、あとで main にまとめるときに衝突しました。
経緯
複数のエージェントに別々の作業を同時にさせると、同じファイルを両方が書き換えることがあります。後から書いた方が先の書き換えを消してしまわないか、worktree に分けると何が変わるかを確かめました。
環境
- macOS 26.6.2、Node.js 24.19.0
- Claude Code 2.1.309(モデルは初めの設定の Claude Opus 5.5)
- Codex CLI 0.166.0(モデルは初めの設定の GPT-6.1-Sol)
- 計算の小さなアプリ。
src/calc.jsにaddとaverageがあり、最後の行がmodule.exports = { add, average };
動き
2つの頼み方を、同時に動かしました。
| 頼んだこと | |
|---|---|
| 1つ目 | src/calc.js に中央値を返す median を足し、module.exports にも加える |
| 2つ目 | src/calc.js に最頻値を返す mode を足し、module.exports にも加える |
どちらも1回の指示で任せる使い方(claude -p、codex exec)で動かし、終わったあとの src/calc.js を見ました。
| 組み合わせ | 終わったあとの src/calc.js | 途中で起きたこと |
|---|---|---|
| 同じフォルダーで Claude Code を2つ | median と mode の両方が残った。最後の行は module.exports = { add, average, mode, median }; | 後から書こうとした方の書き換えが、エラーで止まった。読み直してから書き直した |
| 同じフォルダーで Claude Code と Codex | 両方が残った | エラーはなかった。Codex はファイルを2回読んでから書き換えた |
--worktree で分けた Claude Code と Codex | 元のフォルダーは変わらない。それぞれの worktree に1つずつ足された | 作業中のぶつかりはない。main にまとめるときに衝突した |
読んだあとに変わったファイルは上書きしない
Claude Code 同士のとき、後から書き換えようとした方の記録には、次のエラーが出ていました。
terminalFile has been modified since read, either by the user or by a linter. Read it again before attempting to write it.
Claude Code は、ファイルを読んだあとに誰かが書き換えると、そのままでは上書きしません。エラーのあとにファイルを読み直し、もう一方が足した mode を残したまま median を足しました。
worktree で分けると、まとめるときにぶつかる
--worktree を付けると、それぞれ別のフォルダーで作業します。
| worktree の場所 | ブランチ | |
|---|---|---|
Claude Code(claude -p ... --worktree median) | リポジトリの中の .claude/worktrees/median | worktree-median を作った |
Codex(codex exec --worktree ...) | Codex の設定のフォルダー(初めは ~/.codex)の下の worktrees/ | 作らない(detached HEAD) |
どちらも、worktree の中の変更はコミットせずに終わりました。それぞれをコミットして main にまとめると、median は問題なくまとまり、続けて mode をまとめたところで src/calc.js が衝突しました。2つとも、同じファイルの最後の module.exports の行と、その上に関数を足していたためです。
terminal$ git merge codex-mode
CONFLICT (content): Merge conflict in src/calc.js
Automatic merge failed; fix conflicts and then commit the result.
公式との違い
違いは見つかりませんでした。Claude Code の --help には、-w, --worktree [name] が「このセッションのために新しい git worktree を作る」と書かれています。Codex の --help にも、--worktree は「新しく管理する Git worktree でセッションを動かす」とあります。
対処
同じ行を直す作業は、worktree に分けない
同じフォルダーなら、書き換えが消えることはなく、両方の変更が1つのファイルに残ります。worktree に分けたときは、最後にまとめる作業が残ります。同じファイルの同じあたりを両方が直す作業は、worktree に分けても衝突します。
worktree の変更は、自分でコミットしてからまとめる
Claude Code の worktree は worktree-{名前} のブランチになっているので、そのままコミットしてまとめられます。Codex の worktree はブランチがないので、git switch -c ブランチ名 でブランチを作ってからコミットします。
Claude Code の worktree は、リポジトリの中にできる
.claude/worktrees/ はリポジトリの中なので、git status に .claude/ が出ます。コミットしないように、.gitignore に入れておきます。
注意点
1回ずつの結果で、書き換えの順番は毎回変わる
どちらが先に書くかは、その時々で変わります。同じフォルダーで両方が同時に同じ行を書き換えようとしたときも、今回と同じ動きになるとは限りません。
worktree の場所は、まとめる前に確かめる
Claude Code と Codex でも、worktree を作る場所とブランチの扱いが違いました。worktree を作るほかのアプリを使うときも、まとめる前に git worktree list で場所を確かめます。
terminal$ git worktree list
参考文献
著書
articleClaude Code と Codex を並列で動かしたときの動き: 同じファイルでも書き換えは消えない
articleClaude Code の Stop フックで、終わる前にテストを走らせる手順: 失敗が残ったまま終わらない
articleClaude Code と Codex のスキルの置き場所の動き: .claude/skills と .agents/skills は互いに読まない
articleClaude Code の /security-review で変更を点検する手順: origin/HEAD がないと止まる
articleClaude Code と Codex のスキルを入れる前に中身を確かめる手順: security-audit で見る5か所
articleCloudflare の security-audit スキルを Claude Code と Codex で比較: 3つとも見つけ、進め方に差
articleClaude Code と Codex を並列で動かしたときの動き: 同じファイルでも書き換えは消えない
articleClaude Code と Codex のスキルの置き場所の動き: .claude/skills と .agents/skills は互いに読まない
articleClaude Code と Codex のスキルを入れる前に中身を確かめる手順: security-audit で見る5か所
articleCloudflare の security-audit スキルを Claude Code と Codex で比較: 3つとも見つけ、進め方に差
articleCodex の常駐プロセス(app-server)と会話の記録: 画面を閉じても動き続ける
articleClaude Code と Codex の違いを同じ課題で比較: 3つともテストは通り、差はテストの数と説明に出た
articleClaude Code と Codex を並列で動かしたときの動き: 同じファイルでも書き換えは消えない
articleClaude Code の Stop フックで、終わる前にテストを走らせる手順: 失敗が残ったまま終わらない
articleClaude Code と Codex のスキルの置き場所の動き: .claude/skills と .agents/skills は互いに読まない
articleClaude Code の /security-review で変更を点検する手順: origin/HEAD がないと止まる
articleClaude Code と Codex のスキルを入れる前に中身を確かめる手順: security-audit で見る5か所
articleCloudflare の security-audit スキルを Claude Code と Codex で比較: 3つとも見つけ、進め方に差
