0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code v2.1.268|deny ルールの symlink 抜けが塞がる|毎日Changelog解説

0
Posted at

Claude Codeの公式Changelogをリリースから最速で翻訳・解説しています。

v2.1.268 で、シンボリックリンク配下に書いた deny / ask ルールが、パスの綴り次第で外れていた問題が直りました。macOS の /tmp /etc /var/private 配下へのリンクで、同じファイルを 2 通りの綴りで指せます。/private/tmp/... のように実体側の綴りで渡されたパスには、/tmp で書いた deny / ask が当たっていませんでした。

今回の拾いどころ

  1. deny ルールの抜け道が塞がる - symlink の綴り違いと、env -C / eval を含む行で外れていた (v2.1.268)
  2. WebFetch の deny が Artifact に効かなくなる - Artifact ツールの読み書きは別のルールで止める形に変わった (v2.1.268)
  3. 互換 endpoint の HTTP 400 が解消 - ANTHROPIC_BASE_URL 経由だと v2.1.265 から毎ターン失敗していた (v2.1.268)
  4. WebFetch に 300 秒の締め切り - 応答を閉じないサーバーで無期限に待たなくなった (v2.1.268)

deny ルールが外れていた経路

Fixed deny and ask permission rules on symlinked directories (/etc, /tmp, /var on macOS; /bin on Linux) not applying when a path was given by its real location, and Bash commands ignoring deny rules written on a symlinked path spelling

項目の後半は Bash 側の話です。別項目の Read / Edit の抜けも並べると、v2.1.267 までの判定は次のとおり。

書いてあったルール Claude Code に来た入力 v2.1.267 までの結果
/tmp など symlink 側の綴りで書いた deny / ask 実体側の綴り ( /private/tmp/... など) のパス ルールが当たらない
symlink 側の綴りで書いた deny Bash コマンド Bash がルールを無視する
Read / Edit の deny env -Ceval など、権限チェッカーが解析できないコマンドを同じ行に含む Bash コマンド ルールが当たらない

Claude Code は v2.1.268 から、3 行ともルールどおりに判定します。3 行目だけは symlink と関係がなく、Bash の解析が届かないケースでした。env -C は作業ディレクトリを移してからコマンドを動かし、eval は文字列をその場でコマンドとして実行します。権限チェッカーからは触るファイルが読めず、そのコマンドに限って Read / Edit の deny が外れていました。

トークンと ${VAR} の展開値が表示に漏れていた

git の URL に埋めたトークンや、MCP 設定の ${VAR} を展開した値が画面に出る経路を、v2.1.268 が閉じました。

plugin と marketplace のエラーは、git ソース URL に含まれるトークンやパスワードをそのまま表示していました。MCP 側は /mcp/plugin のサーバー詳細、claude mcp list / get の出力、MCP ログインのエラーで、${VAR} プレースホルダーを解決した後の値が出ていました。

信頼していないフォルダも穴になっていました。respawn した in-process の teammate が、そこにある同名の agent ファイルからツールや system prompt を読み込んでいました。

WebFetch の deny は Artifact に届かない

v2.1.268 から、WebFetch 単体の deny / ask ルールは Artifact ツールの読み取りと更新に適用されません。Artifact の読み書きを止めたり確認を挟んだりするルールは、Artifact ルールか WebFetch(domain:claude.ai) で書く形に変わりました。

承認をすべてスキップする設定のローカル Cowork セッションでも、同じ版で挙動が変わっています。Artifact ツールは、セッションのフォルダ外やシンボリックリンクの先にあるローカルファイルを、確認なしで読まずに拒否します。

WebFetch が 300 秒で打ち切られる

# 既定は 300 秒 (300000 ms)。0 で締め切りなし
CLAUDE_CODE_WEBFETCH_DEADLINE_MS=0 claude

応答を開いたまま終わらせないサーバーに当たると、WebFetch はこれまで無期限に待ち続けていました。v2.1.268 では 300 秒で失敗扱いになり、締め切りは CLAUDE_CODE_WEBFETCH_DEADLINE_MS で上書きできます。

権限以外で挙動が変わるところ

互換 endpoint、CPU、hook、compact、認証まわりは v2.1.268 で次のように変わりました。

症状 起きていた条件 v2.1.268
毎ターン HTTP 400 で失敗 ANTHROPIC_BASE_URL でサードパーティの Anthropic 互換 endpoint を使う (v2.1.265 から) Artifact ツールの入力スキーマにあった、endpoint が拒否する正規表現が原因。解消
CPU コアが 1 つ張り付く 長時間アイドルのセッション、セッション recap 中に端末のフォーカス通知が連続する 解消
実行中のセッションが組織の既定モデルに黙って切り替わる 別の Claude Code プロセスが古いモデルアクセス情報を更新した 切り替わらない
/compact と auto-compact の要約で文字列が崩れる 会話に $ を含む並びがある 崩れない
PermissionRequest hook が発火しない --print モード 発火する
SessionEnd hook が 1.5 秒で打ち切られる hook 個別の timeout が無く、CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS だけを設定 環境変数の値まで延びる
401 … jti reused で途中終了 claude-code-action のように profile 経由の workload identity federation を複数プロセスで共有 解消
--continue / --resume で会話の表示が遅い SessionStart hook の完了待ち hook を待たずに即表示

修正が 6 割を占める版

v2.1.268 は 96 項目中 59 項目が Fixed で、うち権限ルールの判定、信頼していないフォルダの扱い、シークレットの表示に関わるものが 5 項目ありました。v2.1.265〜v2.1.267 の 3 版で続いていた互換 endpoint の HTTP 400 も、この版で止まっています。追加機能は CLI 側の Added 7 項目中 4 項目が、Claude apps gateway と self-hosted runner の管理者向けでした。

前回: Claude Code v2.1.266〜v2.1.267|maxEffortLevel で effort に上限がつく|毎日Changelog解説

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?