Skip to content

原文(日本語に翻訳)

Linux のサンドボックスモードで rg ... | wc -l などのパイプコマンドがハングして 0 を返す問題を修正しました。

原文(英語)

Fixed rg ... | wc -l and similar piped commands hanging and returning 0 in sandbox mode on Linux

概要

Linux でサンドボックスモードが有効の状態でパイプ(|)を使ったコマンド(例: rg pattern | wc -lgrep ... | sort など)を実行すると、コマンドがハングして結果として 0 を返す問題が修正されました。これはサンドボックスの制限がパイプの動作を妨げていたことが原因で、修正後はサンドボックス内でもパイプコマンドが正常に動作します。

基本的な使い方

Linux のサンドボックスモードでパイプコマンドが正常に動作するようになりました。

bash
$ claude
> プロジェクトの全エラーの数を数えてください
# Claude が実行するコマンド:
# rg "error" . | wc -l
# 修正前: ハングして 0 を返していた
# 修正後: 正しいエラー数が返される

実践例

ユースケース: コードベースの検索と集計

パイプを使ったコード検索の集計が正常に機能します。

bash
# サンドボックスモードで実行
# TODO コメントの数を数える
$ rg "TODO" . | wc -l  # 修正後: 正しい数が返される
# 正規表現マッチ数の集計
$ grep -r "pattern" . | sort | uniq -c  # 正常に動作

ユースケース: ログ分析

ログファイルのパイプ処理が正常に動作します。

bash
# エラーログの分析
$ cat app.log | grep "ERROR" | wc -l  # 正しい数を返す
# 最新 100 行から特定パターンを検索
$ tail -n 100 app.log | grep "warning"  # 正常に動作

ユースケース: ファイル処理パイプライン

複数のコマンドを組み合わせた処理が正常に動作します。

bash
# Python ファイルの行数合計
$ find . -name "*.py" | xargs wc -l | tail -1
# 修正後: 正しい合計行数が返される

注意点

  • この問題は Linux の サンドボックスモード(sandbox.enabled: true)でのみ発生していました
  • macOS のサンドボックスモードや、サンドボックスなしの Linux 環境では発生していませんでした
  • sandbox.failIfUnavailable 設定も v2.1.83 の新機能として追加されています

関連情報