verify について
Docker のないホストで harness の変更を検証する手順です。固定バージョンの Claude Code CLI をスタブ API サーバーに対して実行し、リクエストヘッダーを記録して harness が渡す環境を確認します。
主な機能
- 01固定バージョンの Claude Code CLI を Docker なしで実行
- 02スタブ API サーバーでリクエストを記録
- 03harness のエージェント環境を再現
- 04環境上の注意点とテスト制約を説明
活用シーン
- 01harness の認証環境注入の確認
- 02Docker なしのホストで CLI リクエストをテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ anthropics/ defending-code-reference-harness --skill verifyインストール後、Claude Code で/verifyを入力して読み込まれたか確認します。
詳細
docker がないホストでハーネスの変更を検証する
パイプラインが実際に使用するのは、コンテナ内の claude -p プロセスと、その外部 API リクエストです。docker がない場合は、ハーネスが docker -e 経由で注入する環境変数辞書を使って、同じバージョンに固定された CLI バイナリを直接実行します。
手順
- バージョン固定された CLI を取得する(バージョンは
harness/agent_image.py:CLAUDE_CODE_VERSIONから確認): 一時ディレクトリでnpm install --no-save @anthropic-ai/claude-code@<pin>を実行 → バイナリはnode_modules/@anthropic-ai/claude-code/bin/claude.exeにあります(.exeという名前は Linux でも実際のネイティブバイナリのエントリーポイントです。パッケージの postinstall によって配置されるもので、Windows の名残ではありません)。 - API スタブサーバー:各リクエストのヘッダーを JSONL ファイルに追記し、400
invalid_request_errorを返す小さな HTTP サーバーを用意します(再試行されないため、CLI はすぐに終了します。終了コード 1 が想定どおりです)。 - パイプラインと同じ方法でエージェントの環境変数を構築する:
python3 -c "from harness.auth import resolve_auth_env; ..."を実行し、shlex.quoteを使ってexport形式の行をファイルに出力します(値には改行が含まれます。env $(...)では絶対に渡さないでください。単語分割で壊れるため、ファイルをsourceしてください)。 - コンテナ環境を再現する:ファイルを source する前に
ANTHROPIC_CUSTOM_HEADERS(および解決済みの辞書に含まれない他の環境変数)をunsetします。このリポジトリの Claude Code セッションでは、シェルに.claude/settings.jsonの環境変数が注入されますが、コンテナからは参照できません。 - 実行する:
ANTHROPIC_BASE_URL=http://127.0.0.1:<port> CLAUDECODE= IS_SANDBOX=1 timeout 30 <cli> -p hi --model claude-sonnet-4-5 --max-turns 1を実行し、キャプチャした JSONL を読み取ります。
注意点
tests/test_patch.py/tests/test_patch_grade.pyの単体テストには docker が必要で、docker がないホストでは失敗します。これは既存の問題であり、今回の変更によるものではありません。- docker がなければ、docker の
-e注入部分自体は実行できません。本番環境でANTHROPIC_API_KEYを渡すのと同じ仕組みです。 - インタラクティブスキルで使う部分を確認するには、
.claude/settings.jsonを新しい一時ディレクトリにコピーし、ホスト上のclaudeをそのディレクトリから実行します(設定ファイルだけを環境変数の供給元にするため、環境変数として設定されたANTHROPIC_CUSTOM_HEADERSを解除してください)。
コメント
Markdown 対応