CLAUDE_CODE_DISABLE_CRONとは — スケジュール実行を止める環境変数
CLAUDE_CODE_DISABLE_CRONは、Claude Codeの/loopスケジュールとCron系ツールを止める環境変数です。止まる範囲、設定方法、似た変数との違いをまとめます。
CLAUDE_CODE_DISABLE_CRONは、Claude Codeの/loopスケジュール実行とCron系ツールをまとめて止める環境変数です。値を1にすると/loopスキルとスケジュール管理ツールが使えなくなり、登録済みのタスクも停止します。セッション途中で動いているタスクも例外なく止まります。止まる範囲、設定方法、似た変数との違いをまとめます。
CLAUDE_CODE_DISABLE_CRONが止めるのは/loopとCron系ツール
公式ドキュメントは対象を次のように定義しています。
CLAUDE_CODE_DISABLE_CRON: Set to 1 to disable scheduled tasks.
The /loop skill and cron tools become unavailable and any
already-scheduled tasks stop firing, including tasks that are
already running mid-session.止まる対象は3つに分かれます。まず/loopです。これはセッションを開いたまま同じプロンプトを繰り返し実行するバンドル済みSkillで、CLAUDE_CODE_DISABLE_CRONを設定するとモデルから見えなくなり呼び出せなくなります。次にCron系ツールです。CronCreate・CronList・CronDeleteという3つのツールが該当し、それぞれ繰り返しタスクの登録・一覧・取消を担います。最後に、すでに登録済みのタスクそのものです。ここが見落としやすい点で、設定した瞬間に新規登録が止まるだけでなく、既存の繰り返しタスクも発火しなくなります。
タスクの間隔を指定するcron式を書き慣れているチームほど、この変数一つで登録済みの発火まで巻き込んで止まる点は意識しておく価値があります。
CronCreateが登録するタスクはセッションに紐づきます。--resumeや--continueで会話を再開すると、期限切れでなければ元のタスクが復元される仕組みです。CLAUDE_CODE_DISABLE_CRONを設定した状態で古いセッションを再開すると、復元されるはずのタスクごと機能しません。再開したその場では動いていたつもりの繰り返しタスクが、実は一度も発火しないまま終わっていた、という事故につながります。
/loopには間隔を自分で決める固定モードのほかに、Claudeが次の実行タイミングを自分で選ぶ自己ペースモードがあります。自己ペースモードはScheduleWakeupというツールを使い、各回の実行末尾で次の起動時刻を1分から1時間の範囲で予約し直します。このツールは/loopスキルに含まれる仕組みなので、スキル自体が使えなくなれば呼び出される機会もなくなります。固定間隔・自己ペースのどちらを使っていても、影響範囲は同じです。
有効にする方法 — シェルとsettings.jsonのenvブロック
一時的に無効化したいだけならシェルの環境変数として渡します。
export CLAUDE_CODE_DISABLE_CRON=1
claude個人の全プロジェクトに固定したいなら~/.claude/settings.json、プロジェクト単位で固定したいなら.claude/settings.jsonのenvキーに書きます。
{
"env": {
"CLAUDE_CODE_DISABLE_CRON": "1"
}
}1またはtrue(大文字小文字は問わない)で有効、0またはfalse、あるいは変数そのものを未設定にすれば無効に戻ります。DISABLE_TELEMETRYのように空でない値なら何でも効いてしまう特殊挙動の変数ではないため、明示的に0やfalseを書くか、行ごと削除すれば元に戻ります。
CLAUDE_CODE_DISABLE_BUNDLED_SKILLSやCLAUDE_CODE_DISABLE_WORKFLOWSにはdisableBundledSkills・disableWorkflowsという対応するsettings.jsonの直接キーが用意されていますが、CLAUDE_CODE_DISABLE_CRONにはその記載がありません。専用の設定キーではなく、環境変数(シェルまたはenvブロック)経由でのみ制御する変数です。
シェルでのexportとsettings.jsonのenvブロックでは、反映されるタイミングが異なります。シェルの環境変数はそのターミナルセッション中ずっと有効ですが、値が読み込まれるのはclaude起動時点なので、起動済みのセッションには影響しません。一方settings.jsonのenvブロックに書いた値は、ファイルを保存した時点で起動中のセッションにも反映されます。CLAUDE_CODE_DISABLE_CRONの説明にある「実行中のタスクも止まる」という挙動は、この設定ファイル経由の即時反映と整合しています。起動時にしか読み込まれない一部の機能(OpenTelemetry関連の設定など)とは異なり、再起動を待たずに効く変数だという点は覚えておく価値があります。
設定した後に何が起きるか
設定後は/loopコマンド自体が候補に出てこなくなり、CronCreate・CronList・CronDeleteも呼び出せません。デプロイ完了待ちや長時間ビルドの監視のように、/loopを前提にした運用フローを普段使っているチームは、この変数を一括で有効化すると該当フロー全体が動かなくなる点に注意が必要です。
一方で、モデルへのリクエストそのものやセッション内での通常の対話は影響を受けません。止まるのはあくまでスケジュール実行の仕組みに限られます。使い捨てのCI環境やサンドボックスのように、セッション終了後まで残り続けるプロセスを作りたくない場面では、この限定された影響範囲がむしろ扱いやすさにつながります。
似た環境変数・機能との違い
名前が近い変数や、同じ「自動で繰り返す」系の機能と混同しやすいため、対象を切り分けておきます。
| 対象 | CLAUDE_CODE_DISABLE_CRONで止まるか |
|---|---|
/loop(セッション内の繰り返し実行) | CLAUDE_CODE_DISABLE_CRONで止まるか止まる |
| Cron系ツール(CronCreate/CronList/CronDelete) | CLAUDE_CODE_DISABLE_CRONで止まるか止まる |
| すでに登録済みのタスク・実行中のタスク | CLAUDE_CODE_DISABLE_CRONで止まるか止まる(セッション途中も含む) |
/schedule・/routines(クラウドで動くRoutine) | CLAUDE_CODE_DISABLE_CRONで止まるか止まらない |
バックグラウンド実行(run_in_background・Ctrl+B) | CLAUDE_CODE_DISABLE_CRONで止まるか止まらない |
/schedule(エイリアス/routines)はクラウド側で実行される別機能で、公式ドキュメントも/loopとは別ページ(scheduled tasksとroutines)で解説されています。CronCreateの説明も「現在のセッション内で」タスクを登録するツールだと明記されており、クラウド側のRoutinesを止める仕組みではありません。「自動実行を全部止めたい」という意図でCLAUDE_CODE_DISABLE_CRONだけを設定しても、クラウドで動くRoutineは対象外のまま残ります。
バックグラウンド実行との違いも紛らわしいところです。Bashやサブエージェントをrun_in_backgroundパラメーターやCtrl+Bで裏側に回す機能は、時間指定で繰り返す仕組みではなく、対象はCLAUDE_CODE_DISABLE_BACKGROUND_TASKSです。「バックグラウンド」と「スケジュール」は隣接する概念ですが、Claude Codeでは別の環境変数が別の機能を担当しています。
同じDISABLE系でも、止める範囲と設定手段は変数ごとに異なります。
| 環境変数 | 止める範囲 | settings.json相当キー |
|---|---|---|
CLAUDE_CODE_DISABLE_CRON | 止める範囲/loopとCron系ツール、登録済みタスクの発火 | settings.json相当キーなし(環境変数のみ) |
CLAUDE_CODE_DISABLE_BUNDLED_SKILLS | 止める範囲/loopを含む同梱Skill・Workflow全体を丸ごと除去 | settings.json相当キーdisableBundledSkills |
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS | 止める範囲Bash・サブエージェントのバックグラウンド実行とCtrl+B | settings.json相当キーなし |
CLAUDE_CODE_DISABLE_WORKFLOWS | 止める範囲Workflowツールスクリプトの実行 | settings.json相当キーdisableWorkflows |
CLAUDE_CODE_DISABLE_BUNDLED_SKILLSを設定すると/loopも含めて同梱SkillとWorkflowがまるごと除去されるため、結果としてスケジュール実行も止まります。ただし影響範囲は/initのような他の組み込みコマンド以外の全Skillに及び、スケジュール実行だけをピンポイントで止めたい場合には広すぎます。「スケジュール実行だけを止めたい」ならCLAUDE_CODE_DISABLE_CRON、「同梱Skill全体を無効化したい」ならCLAUDE_CODE_DISABLE_BUNDLED_SKILLSという切り分けになります。
もう一つの違いが、Anthropicからの機能フラグ取得への影響です。DISABLE_TELEMETRY・DO_NOT_TRACK・DISABLE_GROWTHBOOK・CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICを設定したセッションは、機能フラグの取得自体がスキップされ、Pro・Max・Teamプランでのauto mode自動開始などが連鎖して使えなくなります。CLAUDE_CODE_DISABLE_CRONはこの一覧に含まれておらず、機能フラグの取得には影響しません。スケジュール実行だけをピンポイントで止め、それ以外の起動時の挙動は変えたくない場合に向いた変数です。
組織全体で一括適用する
個々の開発者のシェル設定に任せるのではなく、組織全体でスケジュール実行そのものを禁止したい場合は、管理者が配布する管理設定(managed settings)のenvブロックに書きます。
{
"env": {
"CLAUDE_CODE_DISABLE_CRON": "1"
}
}管理設定は組織内の全ユーザーに適用され、個々のプロジェクトやユーザー設定より優先されます。無人での繰り返し実行や、営業時間外の自動再開を許可しない方針を持つ組織では、開発者ごとの設定に頼らずここで一律に止めるほうが取りこぼしが少なくなります。逆に、一部のチームだけ/loopを使いたい場合は、組織全体ではなくプロジェクト単位の.claude/settings.jsonに限定して設定します。
よくある質問
完了通知のPushNotificationも使えなくなりますか
PushNotificationツール自体は無効になりません。長時間タスクの完了をデスクトップ通知やRemote Control経由のプッシュで知らせる機能は、/loopやCron系ツールとは別物です。ただし、通知の呼び出し元になっていた繰り返しタスクそのものが発火しなくなるため、結果として「スケジュール完了時の通知」という使い方は成立しなくなります。
接続しているAPIプロバイダーによって挙動は変わりますか
公式ドキュメントはこの変数について、プロバイダー別の既定値の違いを記載していません。DISABLE_TELEMETRYのようにテレメトリ送信先が変わる変数とは性質が異なり、/loopとCron系ツールはAPI接続方式によらず同じCLI機能として提供されています。Claude API・Amazon Bedrock・Google CloudのAgent Platform・Microsoft Foundryのどれで動かしていても、同じように機能を止める変数と見てよいでしょう。
まとめ
CLAUDE_CODE_DISABLE_CRONは、/loopスキルとCron系ツール、そして登録済みタスクの発火をまとめて止める環境変数です。設定した瞬間にセッション途中のタスクも止まる点、専用のsettings.jsonキーが無く環境変数経由でしか設定できない点が特徴です。無人実行やスケジュール駆動の自動化を許可したくない検証環境、あるいはコンプライアンス要件で予定外の再実行を避けたい環境で使う場面が中心になります。クラウドで動く/schedule・Routineやバックグラウンド実行は対象外なので、それらも一緒に止めたい場合はCLAUDE_CODE_DISABLE_BACKGROUND_TASKSのような別の変数を併用します。組織全体に一括適用したい場合は、管理者が配布する管理設定のenvブロックに同じキーを書けば反映されます。環境変数全体の一覧はClaude Code環境変数リファレンスにまとめています。