💤

Agent coding時代、いつでも気軽にPCをスリープさせたり、VSCodeの再起動をするには?

に公開

最近、Claude Code や Codex などのコーディングエージェントを使ってコードを書くことが増えていますよね、私もそうです。

しかし、困るのが「PC がスリープすると、エージェントも止まってしまう」ことです。

「あーこの処理が終わったら帰宅するか」「あ、もう一つやってから帰宅しよう」みたいなので延々椅子から離れられないとかよくある。

これを避けるために、私は常時起動の Linux BOX 上でエージェントを動かすようにしています。ただ、sshでやってるのはいかにも面倒。エディタも必要ですからね。

ということでVS Code Remote SSHの出番になるんですが、これも接続が切れたタイミングでターミナル上のプロセスも終了します(しないこともある)。

つらい。

そこで最近使っているのが Shpool です。

https://github.com/shell-pool/shpool

コーディングエージェント生存戦略としての Shpool

Shpool は、シェルのセッションを維持し、あとから再接続できるようにするためのツールです。sshが切れても終了しません、古来から screenや tmuxで実現できていますね、なぜ shpool なのかは後述するとして、

shpoolは次のように名前付きのセッションへ attach できます。(ない場合は作成)

shpool attach my-project

Shpool の中に入ると、プロンプトには次のようにセッション名が表示されます。

shpool:my-project john@linuxbox:~$ claude

この中で Claude Code や Codex を起動しておけば、VS Code を閉じたり、PC をスリープしたり、SSH が切れたりしても、あとから同じセッションに戻れます。

# 再接続
shpool attach my-project

これでエージェントを動かしたまま、別の PC から再接続したり、外出先から様子を見たりできます。

tmux や screen ではなく Shpool を使う理由

前述の通り tmux や screen でもできます。

ただ、私が欲しいのはターミナルマルチプレクサーではなく、単に「シェルセッションを維持して、切断後に再接続する」ことです。

画面分割やウィンドウ管理は VS Code 側で十分なので、Shpool くらい機能が絞られているほうが、コーディングエージェント用途にはちょうどよいと感じています。むしろ、画面の崩れになやまされるほうがつらい。今のところ、私の環境では Claude Code や Codex のような TUI アプリケーションも問題なく動いています。

そして list, attach, detach, kill というサブコマンドと、C-Space, C-qというキーバインド(今のコンソールをデタッチ)だけおぼえておけばよい手軽さがよいですね。

mise 経由で入れる

Shpool は Homebrew などでも入れられますが、私は mise 経由で入れています。

mise use --global rust@latest
mise use --global cargo:shpool

最初からパッケージが登録されているわけではないので、CargoのWrapper(?)をつかっていれています。

最近、Linux、macOS、WSL など複数の環境を行き来していると、Homebrew だけで開発ツールを管理するのは少し面倒になってきます。最近は asdf の代わりも含めて、こういった CLI ツール類は mise で管理することが増えています。

Tips: カレントディレクトリ名をセッション名にする

Shpool のセッション名を毎回考えるのが面倒?その場合はカレントディレクトリ名をそのまま使うと便利です。たとえば my-project というディレクトリにいるなら、自動的に my-project というセッション名で attach してほしい。

shpool attach `basename $PWD`

aliasしたほうがよいですが、ギリギリ自分でもタイプできる量ですね。

Shpool のセッション名には / が使えないのが若干不便

2026/05/18 追記

セッション選択が不便なので、ツールをつくりました。これで再接続もらくらく!!しかもcwdで起動するし、セッション名も考えなくていい!

https://github.com/uzulla/shpool-launch

まとめ

単にエージェントのプロセスを生かしておきたい、という用途には Shpool がかなり合っています。(まあ、screenでもいいんですが、ターミナルマルチプレクサの相性問題は本当に面倒なんで)

セキュリティのことを考えると、分離環境であるDocker(Dev Container)に全部のせて、execで入る、みたいなのが一番いいんじゃないかとも思うんですが、そうなるとリモートのDocker engineとどうやって…みたいになるので、まあいまのところ中庸なのかな…と。

というところで現場からは以上です。

Discussion