💭

【完全版】Claude Codeのタイムアウト"2分の壁"を完全破壊!Codexも無限に動く最強の連携を手に入れました

に公開

🚀 はじめに

お時間ない人はAIに見せてくださいね^^
claude codeとかに「これでタイムアウト制限解除して」って言えば多分大丈夫かと。あ、codexの使い方は「codex exec [task]」で使えるから導入してみてくださいね。他の記事でも書いてます!

こんにちは。この記事を読んでくれているあなたも、きっと同じ悩みを抱えていたはずです。「Claude Code、めっちゃ便利だけど、bashコマンドが2分でタイムアウトしちゃう問題、どうにかならないの!?」と。

僕もそうでした。ちょっと重めのビルドを走らせたり、Codexに大規模なリファクタリングを頼んだりすると、決まって「Command timed out after 2m 0.0s」の無慈悲なメッセージ…。せっかくのポテンシャルが台無しですよね。

これまでgtimeoutでラップしたり、シェルの環境変数をいじったり、色々試しては玉砕する日々でした。でもある日、ふと思ったんです。「あれ、これってClaude Code側のタイムアウト設定を変えればいいだけなのでは…?」と。

そこからAIアシスタントに壁打ちしつつ、GitHubのIssueや内部ドキュメントをディグってもらった結果…ついに、ついに見つけました!

…と、ここで話は終わりませんでした。
当初、この方法でもcodexだけは2分の壁が破れず、一度は「ここまでか…」と諦めかけたんです。でも、しつこく調査を続けたら、なんと**Codexの壁にも風穴を開ける『第二の鍵』**が見つかったんです!

この記事では、その七転八倒の全記録と、ついに掴んだ「完全な解決策」を共有します。
**この記事自体をAI(ClaudeやChatGPTなど)に読ませて、「この手順通りに設定して」と頼むのが一番早いかもしれません。**ぜひ試してみてください!

🚨 忌まわしき「2分の壁」問題

もはや説明不要かもしれませんが、Claude Codeにはbashコマンドに対してハードコードされた2分のタイムアウトが存在し、私たちの開発体験を著しく損なっていました。

  • 重いビルドやテストが完走できない。
  • 大規模なコード解析が途中で止まる。
  • AIによるリファクタリングも時間との戦い。

この根本的な制約が、今日、ついに過去のものとなります。

🎉 ブレークスルー!解決策は二段構えだった

結論から言うと、解決の鍵は**「二段構えのタイムアウト設定」**にありました。Claude Code本体と、Codexでは、設定すべき場所が異なっていたのです。

第一の鍵:Claude Code本体のタイムアウトを解除する (settings.json)

まず、すべての基本となるのが、Claude Code自体のタイムアウト設定です。これを設定しないと始まりません。

~/.claude/settings.json ファイルに、以下のenvブロックを追記、または編集します。

~/.claude/settings.json
{
  "mcpServers": {
    // ... 既存のmcpServers設定 ...
  },
  "env": {
    "BASH_DEFAULT_TIMEOUT_MS": "1800000",
    "BASH_MAX_TIMEOUT_MS": "7200000"
  },
  "hooks": {
    // ... 既存のhooks設定 ...
  }
}
  • BASH_DEFAULT_TIMEOUT_MS: デフォルトのタイムアウト(例: 1800000で30分)
  • BASH_MAX_TIMEOUT_MS: 設定可能な最大タイムアウト(例: 7200000で120分)

これを設定してClaude Codeを再起動すれば、sleepfindmakeといった、Codexを介さないあらゆるbashコマンドが時間無制限で実行可能になります! これだけでも革命的です。

第二の鍵:Codexのタイムアウトを延長する (config.toml)

しかし、第一の鍵だけではcodex execで実行するコマンドは2分で止まってしまいます。Codexには独自のタイムアウト設定があったのです。

~/.codex/config.toml ファイルで、使用するプロファイルのtimeout値を設定します。

~/.codex/config.toml
[profiles.long-task]
# タイムアウトを秒で指定 (例: 1800秒 = 30分)
timeout = 1800

[profiles.marathon]  
timeout = 7200

これで、codex execコマンドも2分の壁を越えることができます!

🔬【重要】Codexの「二重タイムアウト構造」という真実

これで万事解決!…と、思いきや、最後の最後に新たな壁が見つかりました。Codexのタイムアウトは、さらに**二重構造(Dual-Layer)**になっていたのです。

  1. 第一層:アプリレベルのタイムアウト (✅ 設定可能)

    • config.tomlで設定できるのがこの層です。
    • cxl "sleep 150" (2.5分のコマンド) → 成功!
  2. 第二層:サンドボックスレベルのタイムアウト (❌ ハードコード)

    • Codexが動作する安全な環境(サンドボックス)自体に、ハードコードされたタイムアウトが存在するようです。
    • これが約2.5分~3分の壁となっています。
    • cxmarathon "sleep 300" (5分のコマンド) → 失敗! (sandbox error: command timed out)

この発見は非常に重要です。つまり、現状の最適解はこうなります。

🎯 結論:これが僕たちの戦い方だ!

  • 超長時間のタスク (3分以上)

    • Claude Codeのbashツールを直接使う。
    • findgrepawksedなどを駆使したデータ処理、大規模なビルドなど。
    • settings.jsonの設定がフルに活きます。
  • "そこそこ"長いCodexタスク (~2.5分)

    • codex execを使う。
    • 2分を少し超える程度のコード解析やリファクタリング。
    • config.tomlの設定が活きます。

絶対的な「2分の壁」は崩れ去りました。私たちは「時間無制限のCodex」と「時間無制限のbash」という、二つの強力な武器を手に入れたのです!

⚙️ 実践ガイド(まとめ)

  1. (バックアップ) まずは~/.claude/settings.json~/.codex/config.tomlをバックアップしましょう。
  2. (Claude Code本体の設定) ~/.claude/settings.jsonenvブロックを追加・編集します。
  3. (Codexの設定) ~/.codex/config.tomlの任意のプロファイルにtimeout = 1800などを追記します。
  4. (JSON構文チェック) python3 -m json.tool ~/.claude/settings.json で構文エラーがないか確認すると安全です。
  5. (再起動) Claude Codeを完全に再起動して、設定を適用します。

これで、あなたの開発環境は新たな次元へ到達します。タイムアウトエラーに邪魔されることなく、思考を止めずに開発に集中してください。

🚀 コミュニティへの貢献:GitHub Issue #5615

今回の発見は、多くの開発者にとっても有益だと考え、すぐにGitHubのIssueとして詳細なレポートを投稿しました。

GitHub Issue #5615: Comprehensive solution for the 2-minute timeout on bash commands, including Codex Exec

このIssueでは、この記事で解説した内容を網羅的に報告しています。

  • コピペで使える具体的な設定方法
  • Codexの二重タイムアウト構造という新発見の解説
  • gtimeoutなど、失敗したアプローチの分析と比較
  • タスクの所要時間に応じた実践的なツール使い分けガイド

これで、世界中のClaude Codeユーザーがこの解決策を簡単に見つけられるようになったはずです。皆でコミュニティを良くしていくのは、最高の体験ですね!

Happy Hacking! 🚀

Discussion