上原正吉(EarthLink Network Co., Ltd.)。AI会社・AI社員による業務自動化と、人の逐次介入なしに24時間自動開発を回す仕組みを自社で実践しています。開発ノウハウと具体的な設定方法、運用して分かった改善点を公開しています。

AI にプログラムの仕事を頼むと、途中で返事待ちになることがよくあります。Claude Code でも Codex でも、ほかの AI でも同じです。別のリポジトリ(プログラム一式の置き場)の担当に依頼を出した、変更のレビューを頼んで返事を待っている、人に確認をお願いした。どれも、返事が来るまで AI にできることはありません。
返事を待つ間も、その AI のセッション(AI との 1 回分の会話)は閉じずに残していました。閉じても前の会話には戻れますが、戻るための一覧では、返事待ちの続きと、もう終わった会話の見分けがつかないからです。待っている間に別のセッションで別の仕事を始め、そこでも返事待ちになると、閉じられないセッションがまた 1 つ増えます。
この回では、この困りごとのために作ったスキル eln-park を紹介します。待ちに入った作業に「再開メモ」を残し、次にそのリポジトリで起動した時に、続きが残っている作業だけを一覧で出します。説明文と番号で選んで続けられます。
今回作った eln-park は Claude Code 用です。Claude Code が決まったタイミングで自動で実行するスクリプト(hook)を使うので、今は Claude Code の上でだけ動きます。ただ、待ちに入った作業に「何の作業か・何を待っているか・次にすること」を書いたメモを残し、次に起動した時に一覧で見せる、という考え方は、Codex でもほかの AI でも同じです。
自社の Claude Code 用プラグイン ELN workflow での話です。eln-park は、連載の入口の回(規律は文書ではなくスキルで配る — ELN workflow の165スキルを紹介します)を 2026 年 9 月に公開した後、10 月に加えたスキルです。その回で紹介した 165 個には入っていないので、連載の追補として紹介します。
claude --resume)とちがい、終わった会話と混ざりません。eln-park は、待ちに入った作業ごとに「再開メモ」という小さな記録を残し、その再開メモだけを一覧にします。cpark 1 と打つだけです。eln-park を作ったのは 2026 年 10 月 4 日です。その日に私が困っていたことを並べると、次の 3 つでした。どれも Claude Code に限らず、AI に仕事を任せていれば起きることです。
claude --resume を打てば、前の会話の一覧から選んで戻ることもできます。けれども、その一覧には返事待ちの会話も、もう終わった会話も区別なく並びます。何を待っているのか、その返事が来たのかも書かれていません。同じリポジトリでいくつもの作業を進めていると、どれが待っている続きなのか分からなくなります。Codex にも codex resume という、前の会話を一覧から選んで戻る同じような手段があります。足りなかったのは、待ちに入った作業だけを、何を待っているかの説明文つきで並べ、人が覚えていなくても選べる一覧でした。
eln-park がすることは、次の 7 つです。番号は、このあとの節の番号と同じです。
/eln-park で再開メモを作ります。cpark 1 と打ちます。再開メモは、手元の Mac のホームディレクトリの下に置きます。git には入れません。メモの中身は、題名、何を待っているか、次にすること、Claude が書いた引き継ぎ本文、応答の最後のまとめの履歴、元の会話の記録の場所です。保存するファイルは本人だけが読める権限にしています。
以下、順に実際の画面で見ていきます。図は、私の本物の記録とは切り離した置き場で eln-park を動かした実際の出力です。図の中の「タブ」はセッション、「駐車」は再開メモを残すこと、「票」は再開メモのことです(eln-park の画面の文字をそのまま載せています)。
返事待ちに入ったところで /eln-park と打つと、Claude が再開メモを作ります。人が打つのは /eln-park だけです。Claude は裏で eln-park.sh park というコマンドを実行し、題名・何を待っているか・次にすること・引き継ぎ本文を渡します。図 1 は、そのコマンドと結果です。
![セッションA(ブランチ feat/iam-least-privilege)で /eln-park と打った時に、Claude が裏で実行するコマンドと結果の端末の図(実出力の再構成・2026 年 10 月 27 日に撮影)。コマンドの行は、eln-park.sh park に題名「IAM ポリシーの最小権限化 — infra-ops の handoff 返答待ち」、待つものの種類 manual、依頼の内容、次にすること、引き継ぎ本文のファイルを渡すもの(値の一部は「…」で省いた表示)。結果として、画面の固定の文言で「駐車しました: [1] IAM ポリシーの最小権限化 — infra-ops の handoff 返答待ち — 待ち: 手渡し infra-ops に許可リストを依頼 ❔」と「このタブは閉じて大丈夫です。次にこの repo を開くと一覧に出ます。」の 2 行が返っている。](../assets/CP-049/fig1-park.png)
図 1 は、AWS の利用権限(IAM)を必要な分だけに絞る作業で、インフラを担当する別のリポジトリに依頼を出し、返事待ちになった場面です。最後の行は、メモが残ったので、このセッションを閉じても次の起動時の一覧から選べる、という知らせです(画面の文字は「このタブは閉じて大丈夫です」)。
題名の書き方には決まりがあります。「何の作業か — 何を待っているか」の形にします。スキルの説明には、悪い例として「infra の修正」、良い例として「IAM ポリシーの最小権限化 — infra-ops の handoff 返答待ち」が書いてあります。似た続きを見分けにくいという困りごと(困りごとの 3 番)への答えが、この題名です。
何を待っているかは、次の 6 種類から選びます。1 列目は、メモに書く種類の名前です。
| 種類 | 何を待つか | その場で状態を確かめるか |
|---|---|---|
usesources | 自社の情報管理サービス UseSources のタスク機能に出した依頼のカード(自社の自動実行の仕組み commander に送った依頼もこれです) | 確かめる |
asana | Asana(タスク管理のサービス)のタスク | 確かめる(Asana に接続する設定がある時) |
pr | GitHub の PR | 確かめる |
commander | commander の作業そのもの | 確かめない |
manual | 人への手渡し | 確かめない |
unknown | 分からない(自動で残したメモは全部これ) | 確かめない |
種類を省くと manual(手渡し)になります。
/eln-park を毎回きちんと打てれば一番よいのですが、実際には打たずに閉じることのほうが多くなります。そこで、打ち忘れたまま閉じたセッションも拾うようにしました。
判断に使うのは、応答の最後のまとめです。私たちの Claude Code では、応答の最後に必ず 3〜4 行のまとめを付けるように決めていて、タスク: 60% のような進み具合と、残: の行(まだ取り込んでいない PR などが入ります)があります。Claude Code に元からある機能ではありません。
仕組みは次のとおりです。
cpark を実行した時なども同じです。判断の決まりは、次のとおりです。
タスク が 100% 未満の時、または 残: に「なし」以外の値(たとえば unmerged=PR#12)がある時です。PR のレビュー待ちは、作業が 100% でも残があるので、ここに入ります。再開メモを作り、題名にはまとめの作業名を、次にすることには 次: の行を入れます。git の状態(まだコミットしていない変更があるかどうか)では判断しません。同じフォルダを別のセッションが使っていると、そちらの変更まで拾ってしまうからです。また、何度やり直しても結果が同じになるよう、処理済みの控えには印を付けています。
セッションを自分で閉じたのではなく、ターミナルごと落ちた場合も拾います。「生きているか」は経過時間ではなく、Claude Code のプロセスがまだ動いているかで決めています。返事待ちで何時間も開けたままのセッションは、生きているものとして扱います。
図 2 は、図 1 のセッションA を閉じた後、別のセッションB で PR を出し、/eln-park を打たずに閉じてから、3 つ目のセッションC を同じリポジトリで始めた時の一覧です。
![同じリポジトリで新しい Claude Code のセッションC を始めた時に、起動時に実行される hook(SessionStart)が出す文字(実出力の再構成・2026 年 10 月 27 日に撮影)。画面の固定の見出し「🅿️ 駐車中の続き (demo-app)」の下に、[2] 決済 webhook の署名検証 — 待ち: 不明 ❔ · feat/billing-webhook · 次: レビューを反映して merge · 0分前 (自動) と、[1] IAM ポリシーの最小権限化 — infra-ops の handoff 返答待ち — 待ち: 手渡し infra-ops に許可リストを依頼 ❔ · feat/iam-least-privilege · 次: 返答の許可リストで policy を書き直す · 0分前 の 2 行が並び、最後に「「N の続き」と言えばこのタブで続けます。元の会話を再開するならターミナルで cpark N。」と出ている。](../assets/CP-049/fig2-session-start.png)
[2] の末尾に (自動) と付いています。セッションB では /eln-park を打っていません。最後の応答のまとめが「タスク 80%・残 unmerged=PR#12」だったので、セッションC を起動した時に自動で再開メモになりました。題名は、まとめの作業名「決済 webhook の署名検証」がそのまま使われています。
一覧の決まりは次のとおりです。
/clear(会話を空にして始め直すコマンド)の時だけです。 会話を圧縮した時や、過去の会話に戻った時には出しません。cpark で全部見られます。cpark の一覧を出す時だけです。起動を遅くしないためです(6 で説明します)。番号は、リポジトリごとの連番です。一度使った番号は、片付けた後も再利用しません。「さっきの 3」が別の作業を指してしまわないようにするためです。git の worktree(同じリポジトリを別のフォルダに展開したもの)で起動しても、元のリポジトリが同じなら同じ一覧になります。
セッション ID は、Claude Code が hook の入力と環境変数で渡してくれます。eln-park はそれを自分で拾ってメモに持たせるので、人が ID を控える場面はありません。一覧・メモを残す時・引き受け・brief のどの出力にも ID は出ず、cpark が claude --resume に ID を渡すところも人からは見えません。
一覧を見て「1 の続き」と言うと、Claude はまず eln-park.sh claim 1 を実行して、そのセッションでメモ 1 を引き受けてよいかを確かめます。引き受けてから中身を読む、という順番がポイントです。先に引き受けておかないと、別のセッションと同じ続きを二重に進めたり、違うブランチの上で続きを始めたりしてしまうからです。
![「1 の続き」の引き受けと、断られる場面の端末の図(実出力の再構成・2026 年 10 月 27 日に撮影)。ブランチ main のセッションC で claim 1 を実行すると「引き受けられません: この票は branch feat/iam-least-privilege の作業ですが、このタブは main です。」と断られる(画面の固定の文言)。ブランチを feat/iam-least-privilege に切り替えて再度実行すると「引き受けました: [1] …」と表示される。続けて別のセッションD で claim 1 を実行すると「引き受けられません: [1] は別のタブで作業中です (/work/demo-app)。」と断られ、その後の list では [1] の行の末尾に「🔵 別のタブで作業中」が付いている。](../assets/CP-049/fig3-claim.png)
図 3 では、断られる場面を 2 つ撮りました。
main で起動していましたが、メモ 1 は feat/iam-least-privilege の作業です。違うブランチの上で続きを始めると、変更が別のブランチに入ってしまいます。そこで引き受けずに、ブランチを合わせるか、cpark 1 を使うよう案内します。ブランチそのものが消えていた時は、今のブランチで引き受けて、その旨を表示します。このほか、1 つのセッションが引き受けられるメモは 1 件だけです。すでに別のメモを担当しているセッションで別の続きを言うと、断ります。
断られた時、Claude は理由と案内をそのまま伝えて止まります。断られた理由を飛ばして別の方法で続けることはしない、とスキルに書いてあります。番号でなく「IAM の続き」のように説明で言われた時は、題名から番号を探します。当てはまるメモが 2 つ以上あれば、候補を並べて 1 つだけ質問します。
続け方は 2 通りあり、どちらか 1 つを選びます。今の新しいセッションで続けるなら「1 の続き」と言い、元の会話そのものに戻るなら、「1 の続き」とは言わずにターミナルで cpark 1 と打ちます。
1 つ目は、今の新しいセッションで続ける方法です。「1 の続き」で引き受けた後、Claude は eln-park.sh brief 1 を実行して、メモの中身を読み込みます。
![引き受けた後に読み込む中身(brief)の端末の図(実出力の再構成・2026 年 10 月 27 日に撮影)。見出し「# [1] IAM ポリシーの最小権限化 — infra-ops の handoff 返答待ち」の下に、待ち、branch と作業場所(/work/demo-app)、「次の一手」の行が並ぶ。続く「## 引き継ぎ本文」には「目的」「決まったこと」「待ち先」「次の一手」の 4 行、「## 経過 (recap の履歴)」にはタスク 60% のまとめ 1 行、「## 元の会話の最後の 2 件」には user の依頼と assistant の返事が出ている。](../assets/CP-049/fig4-brief.png)
図 4 のとおり、brief には次のものが出ます。
新しいセッションの Claude は、これを読んでから作業に入ります。元の会話の全部を読み込むわけではないので、会話の文脈を引き継ぐのは、引き継ぎ本文と経過と最後の数件です。
2 つ目は、ターミナルで cpark 1 と打つ方法です。これは Claude Code の claude --resume <ID> で、元の会話そのものを再開します。別のセッションがそのメモを引き受けて作業している間は、cpark も「別のタブで作業中」と断ります。同じ続きを 2 か所で進めないためです。違いは、ID を人が持たないことに加えて、次のことを先に済ませる点です。
| 今のセッションで続ける(「1 の続き」) | 元の会話に戻る(cpark 1) | |
|---|---|---|
| 誰が打つか | 人が Claude に言い、Claude が引き受けて brief を読む | 人がターミナルで打つ |
| 会話 | 新しいセッションに、引き継ぎ本文と経過を読み込む | 元のセッションをそのまま再開する |
| 作業場所 | 今のセッションのまま | 元の作業場所に移ってから再開する(claude --resume は、その会話を作ったフォルダでないと見つからないため) |
| アカウント | 今のセッションのまま | メモに記録したアカウントの設定で起動する |
| ブランチ | 違えば断る | 違えば再開せず、git switch を案内する |
| 作業場所の worktree が消えていた時 | 関係ない | 作り直してよいかを聞き、よければ作り直してから再開する |
| 元の会話の記録が消えていた時 | 控えから読む | 控えから元の場所に戻してから再開する |
最後の行の「控え」について説明します。Claude Code は、古い会話の記録を消すことがあります。eln-park は、会話の記録のファイルにハードリンク(同じ中身を別の名前でも指せるようにする仕組み)を張っておきます。元のファイルが消えても、中身は残るので、そこから戻せます。どのメモからも指されなくなった時にだけ消します。
cpark は、最初に一度だけ eln-park.sh install で手元に置く必要があります。名前は、C 言語のコンパイラの cc とぶつからないように選びました。
何を待っているかの今の状態は、brief を読む時と、ターミナルで cpark の一覧を出す時に確かめます。Claude Code を起動した時の一覧では確かめません。
私たちは今、範囲の決まった作業を、手元のセッションで抱えずに commander(作業を自動で実行する自社の仕組み)に送るようにしています。送る手順の最後には再開メモを作る手順を入れてあり、何を待っているかには送った依頼のカードを書きます。0.410.0 の版からは、そのカードが完了になると「✅ 完了・続けられる」と出るようになりました。完了の印が出たら、成果の PR やコメントを確かめてから続ける、とスキルに書いてあります。待つのは人が開けたままのセッションではなく、再開メモです。
終わったメモは eln-park.sh done 1 で片付けます。片付けは削除ではなく、片付け用の場所に移すだけです。90 日の間は restore 1 で一覧に戻せます。日数を指定して古いメモをまとめて片付ける prune もあります。
別のセッションが作業しているメモは、done で片付けられません。片付けられるのは、そのセッションを閉じた後です。引き受けたセッション自身からは、done で片付けられます(0.413.2 の版から)。自動で片付くのは、さきほどの「完了と見なす」決まりに当たった時だけです。
返事待ちの AI のセッションを開けっぱなしにしていた理由は、閉じると、終わった会話と混ざって続きが見分けられなくなるからでした。eln-park は、その「続き」を説明文つきの再開メモとして残し、次に起動した時に、続きが残っている作業だけを番号で選べるようにしました。残し忘れても自動で残り、間違った続きを引き受けそうな時は断ります。
今回作ったのは Claude Code 用ですが、待ちに入った作業にメモを残して閉じ、次に起動した時に一覧から選ぶ、という考え方は Codex でもほかの AI でも同じです。開けたままのセッションが増えて困っている方の参考になればうれしいです。同じような困りごとを、別のやり方で解決している方がいれば、ぜひ教えてください。
claude --resume で前の会話に戻ることもできます)。/work に置き換えています。# で始まる灰色の斜体の行は場面の説明で、ツールの出力ではありません。リポジトリ名の demo-app と、作業の題名・依頼先は撮影用に作ったものです。起動時の一覧(図 2)は、SessionStart の hook が画面に出す文字そのものです。状態の印の ❔ は白い疑問符で、図では「?」のように見えます。この ELN workflow(AI開発の品質を仕組みで守る自社プラグイン)についての記事は、考え方・スキルの中身・実際に防いだ事故を、順次シリーズとして公開していきます。 興味のある方は、ぜひ「いいね」と記事の購読をお願いいたします。
自社プロダクトの一覧は https://www.eln.ne.jp/products にまとめています。
上原正吉。EarthLink Network Co., Ltd. 代表。AI社員に日々の業務を任せ、開発では人が逐一指示しなくても作業が進むHOOTL(Human Out Of The Loop)の仕組みを自社で実践しています。このブログでは、業務自動化と24時間自動開発のノウハウ、具体的な設定方法、日々の運用で見つかった問題と改善を共有します。
また、AIで業務や開発を組み替えたい会社・チーム向けに、AI活用のコンサルティングも受け付けています。ご相談は www.eln.ne.jp からどうぞ。
EarthLink Network は、会社の全業務を AI で回すために、必要になったものを自社で作っています。いま作っているプロダクトの一覧と概要は、こちらにまとめています。
→ EarthLink Network が自社でつくっている18のプロダクト
会社と各プロダクトの詳細は、公式サイト www.eln.ne.jp をご覧ください。