Claude Codeで一回きりのリマインダーを設定する
Claude Codeに自然言語で頼むだけで一回だけ発火するリマインダーを設定できます。/loopとの違い、ジッター、セッションが消えたときの挙動をまとめます。
Claude Codeに一回きりのリマインダーを頼む方法
/loopのようなコマンドは特に要りません。やりたいことを自然言語でそのまま伝えるだけで、Claude Codeは一回発火して自動的に消えるタスクを登録します。
remind me at 3pm to push the release branchin 45 minutes, check whether the integration tests passed時刻を指定するか、経過時間を指定するかは自由です。どちらの言い方でも、Claudeは頼んだ内容を1回だけ実行するタスクとして解釈し、登録した発火時刻を確認メッセージで返します。実行が終わると、そのタスクは一覧から自動的に削除されます。
こんな場面で使う
答えを待つ間、別の作業に頭を切り替えたいときに向いています。
- デプロイやビルドが終わるタイミングで、結果だけ後から知りたい
- 会議の15分前に、前提の資料を読み返すよう促してほしい
- 長時間かかるバックグラウンド処理を仕掛けたあと、区切りのいい時間に様子を見たい
- 退勤前の決まった時刻に、その日の未処理タスクをまとめて確認したい
いずれも「毎回同じことを繰り返したい」のではなく「一度だけ、決まったタイミングで思い出させてほしい」という頼み方です。この境界線が/loopとの使い分けの基準になります。
両方を併用することもできます。長時間かかるビルドは/loopで数分おきに様子を見つつ、退勤時刻には別途「17時になったら今日の未処理タスクをまとめて教えて」と一回きりのリマインダーを重ねて頼む、という組み合わせです。どちらも同じスケジューラの上で動き、それぞれ独立したタスクとして登録されます。
内部ではcron式に変換されている
自然言語の指示は、裏側では通常のスケジュールタスクと同じ仕組みに乗ります。Claudeは「3時」「45分後」のような表現を分・時単位のcron式に変換し、一度だけ発火するフラグを立てて登録します。この変換はCronCreateというツール経由で行われ、繰り返し実行の/loopが使っているスケジューラと基盤は共通です。
だからこそ、一回きりのリマインダーにも通常のスケジュールタスクと同じ制約が及びます。セッションに紐づくため、新しい会話を始めると消えます。1つのセッションに置けるスケジュールタスクの上限は50件で、これは/loopのタスクや繰り返しリマインダーとの合計です。大量のリマインダーを積み上げる使い方には向きません。
「45分後に確認して」のような経過時間の指定も、頼んだ瞬間にcron式へ固定されます。基準になるのは発火予定の分と時であって、経過時間そのものを覚えているわけではありません。そのため、頼んだあとに長い応答が続いて会話が止まっていても、再開時に基準時刻がずれることはありません。
同じセッションに複数の一回きりのリマインダーを重ねて登録することもできます。それぞれ独立したタスクとして扱われ、片方をキャンセルしても残りの発火には影響しません。hooksでセッションの状態を監視している場合も一回きりのリマインダーを見分けられます。Stop hookのsession_cronsという配列に、recurring: falseのエントリとして現れるからです。
繰り返したいなら/loop、1回で終わるならこちら
同じ「あとで確認してほしい」という頼み方でも、繰り返すかどうかで選ぶ仕組みが変わります。
| やりたいこと | 向く仕組み | 理由 |
|---|---|---|
| 1回だけ、特定の時刻か経過時間後に確認してほしい | 向く仕組み自然言語のリマインダー | 理由発火後に自動で消え、コマンドを覚える必要がない |
| 一定間隔で繰り返し様子を見てほしい | 向く仕組み/loop 5m ... | 理由固定間隔で何度も再実行される |
| 状況に応じて間隔を変えながら繰り返し見張ってほしい | 向く仕組み/loop(間隔省略) | 理由Claudeが毎回自分でペースを決める |
| セッションを閉じても確実に動かしたい | 向く仕組みRoutines | 理由クラウド側で実行され、マシンの起動が要らない |
一回きりのリマインダーと/loopの使い分けの詳細はClaude Codeの/loopにまとめています。マシンを閉じても動かし続けたい定期実行はClaude Code Routinesの対象です。
リマインダーを確認・キャンセルする
登録したリマインダーも、自然言語でそのまま扱えます。
what scheduled tasks do I have?cancel the deploy check job裏側ではCronListが一覧を返し、CronDeleteがIDを指定してタスクを取り消します。各タスクには8文字の識別用IDが振られるため、複数のリマインダーを同時に抱えている場合でも一覧で見分けが付きます。
発火のタイミングで気をつけること
スケジューラは毎秒、期限が来たタスクをチェックし、低優先度でキューに入れます。発火するのはターンの合間だけです。Claudeが応答している最中に予定時刻が来ても、その場では動かず、今のターンが終わってから実行されます。時刻はすべてローカルのタイムゾーンで解釈されます。
ちょうど毎時00分・30分に指定したリマインダーは、最大90秒前倒しで発火することがあります。これは同時刻に多数のセッションがAPIへ一斉アクセスしないための調整で、タスクIDから決まる固定のずれです。厳密な時刻にこだわるなら、00分・30分以外の分を指定すると回避できます。繰り返しタスク側のジッターの仕組みや、cron式そのものの書き方はClaude Code cron式リファレンスで扱っています。
見逃した回の埋め合わせは行われません。長い応答の間に予定時刻を過ぎても、アイドルに戻った時点で1回だけ実行され、過ぎた分がまとめて何度も実行されるわけではありません。
セッションを閉じる・新しい会話を始めるとどうなるか
一回きりのリマインダーはセッションスコープです。新しい会話を始めると、発火前でも消えます。--resumeや--continueで元のセッションを再開した場合は、まだ発火時刻を過ぎていなければ復元されます。
ターミナルを閉じるとセッションごと止まります。ドキュメント上明記されているのはセッションをバックグラウンドに退避させると/loopタスクがバックグラウンドセッションに引き継がれる、という挙動です。一回きりのリマインダーも同様に引き継がれるかは明記がありません。退避しただけでタスクが消えるという記述はドキュメントにありません。バックグラウンドへの退避は、新しい会話を始める操作とはあくまで別物です。
機能フラグの取得をオフにした環境で、セッションをまたいでタスクを保持しようとした場合に限り、.claudeディレクトリやタスクの保存ファイルがシンボリックリンクだと登録そのものがエラーになります。エラーが出たら、まずこの保存先の構成を疑うのが早道です。
よくあるつまずき
新しい会話を始めたら消えていた — 仕様どおりの挙動です。セッションスコープなので、同じリマインダーを続けたい場合は新規に会話を始めず--resumeを使います。
発火しなかった — ターミナルを閉じていないか確認します。閉じていた場合、セッションそのものが止まるためリマインダーも動きません。
思ったより早く鳴った — 00分・30分ちょうどに指定していないか確認します。ジッターにより最大90秒早く発火することがあります。
大量にリマインダーを積んだら登録できなくなった — 1セッションあたりの上限は50件です。/loopのタスクとも合算されるため、不要なものはCronDelete(自然言語でのキャンセル)で削除します。
よくある質問
繰り返しのリマインダーにしたい場合はどうしますか
自然言語で頼むリマインダーは一回きりの発火専用です。繰り返したい場合は/loop 5m ...のように間隔を指定するか、間隔を省略してClaudeに自己ペースで繰り返させます。
スケジュール自体を丸ごと無効にできますか
環境変数CLAUDE_CODE_DISABLE_CRON=1を設定すると、一回きりのリマインダーを含むスケジューラ全体が無効になります。すでに登録済みのタスクも発火しなくなります。
マシンをスリープさせても大丈夫ですか
スリープからの復帰後にセッションがどう扱われるかはドキュメント上明記がなく未確認です。マシン自体をシャットダウンした場合はセッションが止まるため発火しません。
何時間先まで指定できますか
ドキュメント上、指定できる時間の長さそのものに上限は明記されていません。ただしセッションが閉じれば消えるため、実務上はそのセッションを開き続けられる範囲、または--resumeで戻ってくる範囲が実質的な上限になります。長期間先の予定には、クラウドで動くRoutinesのほうが向きます。
/goalと組み合わせられますか
/goalは完了条件が満たされるまでターンを重ねて自走する仕組みで、時刻や経過時間で発火する一回きりのリマインダーとは動く原理が異なります。「〇〇が終わるまで作業を続けてほしい」なら/goal、「〇〇時に一度だけ確認してほしい」なら本記事のリマインダーです。
スキルやスラッシュコマンドを指定して呼び出せますか
ドキュメントで確認できるのは/loop 20m /review-pr 1234のように/loopにスキル呼び出しを含める例で、一回きりの自然言語リマインダーへの適用は明記されていません。同じスケジューラ基盤である以上同様に扱える可能性はありますが、確実に動くと言い切れるのは/loop経由の使い方です。
まとめ
一回きりのリマインダーは、/loopを使わず自然言語で時刻や経過時間を伝えるだけで登録できます。内部ではcron式に変換され、一度発火すると自動的に消えます。セッションスコープである点と00分・30分指定でジッターが乗る点は、/loopや繰り返しタスクと共通の制約です。繰り返し確認したいなら/loop、達成条件で区切りたいなら/goal、マシンを閉じても確実に動かしたいならRoutinesを選ぶという住み分けです。