Skip to content

原文(日本語に翻訳)

ツールのエラーの切り捨て処理が絵文字を分断した場合に --resumeno low surrogate in string で失敗していた問題を修正しました。既に破損したセッションは読み込み時にサニタイズされます。

原文(英語)

Fixed --resume failing with no low surrogate in string when a tool error truncation split an emoji; pre-corrupted sessions are sanitized on load

概要

Claude Codeでツールのエラーメッセージが切り捨てられる際、処理の境界が絵文字(サロゲートペアを使用するUnicode文字)の途中で発生した場合、セッションデータが破損することがありました。この破損により --resume での再開時に no low surrogate in string というエラーが発生し、セッションの継続が不可能になっていました。この修正では、新規セッションでの絵文字の適切な処理に加え、既存の破損済みセッションも読み込み時に自動的に修復されます。

基本的な使い方

この修正は自動的に適用されます。以前に --resume でエラーが発生していたセッションも、アップデート後は自動的に修復されて再開できるようになります。

bash
# 以前はこのエラーが発生していた
claude --resume <session-id>
# エラー: no low surrogate in string

# 修正後は自動的にサニタイズされて正常に再開できる
claude --resume <session-id>
# → セッションが正常に再開される

実践例

絵文字を含むコードへの対応

絵文字やUnicode文字を含むファイルを扱うセッションでの再開が安定します。

python
# このようなコードを扱うセッションで
def greet(name):
    return f"こんにちは、{name}! 🎉"

# エラーが発生してツール出力が切り捨てられても
# セッションが破損しなくなった
bash
# 絵文字を含むコンテンツを扱うセッションを再開する
claude --resume
# → 以前は失敗していたが、修正後は正常に再開される

破損したセッションの自動修復

修正以前に発生した破損済みセッションも自動的に修復されます。

bash
# アップデート前に作成された破損セッションがある場合
# アップデート後に以下を実行すると自動修復される
claude --resume <古いsession-id>

# サニタイズ処理が自動的に実行され、セッションが再開可能になる

セッション一覧から再開

--resume を引数なしで実行してセッション一覧から選択することも可能です。

bash
# セッション一覧を表示して再開するセッションを選択
claude --resume

# 絵文字の問題で以前再開できなかったセッションも
# 修正後は一覧に表示されて選択できるようになる

注意点

  • no low surrogate in string エラーはJavaScriptのUnicode文字列処理における問題で、絵文字(🎉🚀など)や一部の特殊文字がサロゲートペアとして内部的に表現される際に、その境界で切り捨てが発生することで起きます。
  • この修正は既存の破損セッションも自動的に修復します。ただし、修復の過程で破損していた部分のデータが一部失われる可能性があります(切り捨てられた絵文字の不完全な部分が削除されます)。
  • 修復によって失われるデータは最小限(壊れた文字の断片)であり、セッションの主要な内容は保持されます。
  • 将来的にも絵文字やマルチバイト文字を含むコンテンツを安全に扱えるよう改善されています。

関連情報