Skip to content

原文(日本語に翻訳)

ネイティブビルドでセッション中にターミナルが閉じられたりSSHが切断された際の未捕捉例外を修正しました。

原文(英語)

Fixed an uncaught exception when the terminal is closed or SSH disconnects mid-session under the native build

概要

Claude Codeのネイティブビルド(Node.jsランタイム上でなく、プラットフォームネイティブのバイナリとして動作するバージョン)において、セッション中にターミナルウィンドウを閉じたり、SSH接続が突然切断されたりした場合に未捕捉の例外が発生していました。この例外はエラーログに記録されましたが、場合によってはクラッシュレポートが生成されたり、次回起動時に問題が残ることがありました。この修正により、ターミナルの突然の終了やSSH切断が適切に処理されます。

基本的な使い方

この修正は自動的に適用されます。ターミナルの突然の終了やSSH切断時のエラー処理が改善されます。

bash
# SSH経由でClaude Codeを使用する一般的なシナリオ
ssh user@remote-server
claude

# 作業中...
# 突然ネットワークが切断された場合
# 修正前: 未捕捉例外が発生しエラーログが記録される
# 修正後: 例外が適切に処理され、クリーンに終了する

実践例

SSH経由での安定したClaude Code使用

bash
# SSH接続でリモートサーバーにClaude Codeをインストール
ssh user@remote-server

# Claude Codeを起動
claude

# 長時間のタスクを実行
> プロジェクト全体のコードレビューを実行してください

# SSH接続が切断された場合(ネットワーク不安定など)
# 修正後: エラーが適切に処理される

# 再接続後の状態確認
ssh user@remote-server
claude agents  # バックグラウンドタスクの状態を確認

tmuxやscreenを使った安定性の向上

bash
# SSH切断に備えてtmuxを使用する(推奨)

# tmuxセッションを開始
tmux new-session -s claude-work

# Claude Codeを起動
claude

# SSH切断後も tmuxセッションは生き続ける
# 再接続時
ssh user@remote-server
tmux attach-session -t claude-work
# → セッションが再開される

# screenを使う場合
screen -S claude-work
claude
# SSH切断後
# screen -r claude-work

ネイティブビルドの確認

bash
# 使用しているClaude Codeのビルドタイプを確認
claude --version

# ネイティブビルドかNode.jsビルドかを確認
file $(which claude)
# ネイティブビルド: "ELF 64-bit LSB executable, x86-64..."(Linux)
# Node.jsビルド: "a /usr/bin/env node script"

# どちらのビルドタイプでも修正が適用されます

エラーログの確認

bash
# 修正前に発生していた未捕捉例外のログを確認
cat ~/.claude/logs/claude-code.log | grep -i "uncaught\|exception\|error"

# 修正後はこれらのエラーが記録されなくなる
# (ターミナル終了に関連する例外が適切に処理される)

# Claude Codeのログディレクトリ
ls ~/.claude/logs/

注意点

  • この問題はネイティブビルドで特に発生していましたが、Node.jsビルドでも同様のエッジケースが存在する可能性があります。
  • SSH切断時のセッションデータの保存状況は、セッションの状態によって異なります。進行中のLLMリクエストが失われる場合があります。
  • 長時間の作業をSSH経由で行う場合は、tmuxやscreenなどのマルチプレクサの使用を強く推奨します。
  • Claude Codeのバックグラウンドタスク機能(claude --background)を使用すると、SSH切断後もタスクが継続される場合があります。

関連情報