ai-tools

Claude Code の隠れた prompt marker:日付文字列がなぜ気持ち悪いのか

Thereallo の Claude Code prompt steganography 記事を読み、何が見つかったのか、いつ発火するのか、developer tool の信頼に何を意味するのかを整理する。

Jul 01, 2026
Claude CodeAI toolssecurityprivacyprompt

Thereallo が Claude Code についての reverse engineering note を公開していました:Claude Code Is Steganographically Marking Requests。論点はモデルの回答品質ではありません。ファイルを読み、shell command を実行し、git を操作し、ローカルの広い文脈に触れる coding agent の client をどこまで信頼できるか、という話です。

この記事はその公開記事をもとにした整理とコメントです。私自身が Claude Code の binary を独立に再現検証したレポートではありません。

何が見つかったのか

原文の作者は Claude Code 2.1.196 を調べ、system prompt に入る現在日付の文を変える logic を見つけたと説明しています。

普通の文は次のような形です。

Today's date is 2026-06-30.

marker は非常に小さいです。変わる可能性があるのは二つだけです。

  1. Today's の apostrophe。
  2. 日付区切り文字。-/ になることがある。

人間が見ると、ただの普通の英文に見えます。しかし log processor、gateway、backend parser から見ると、その小さな文字差分は分類情報を運べます。原文はこれを prompt steganography と呼んでいます。つまり、無害に見える prompt text の中に signal を隠すということです。

いつ発火するのか

原文で重要な trigger は ANTHROPIC_BASE_URL です。

この環境変数が設定されていない場合、または公式 endpoint の api.anthropic.com を指している場合、この logic は早期 return し、日付 prompt は普通のままになります。興味深い path に入るのは、Claude Code を custom base URL に向けている場合です。

たとえば次のような構成です。

  • 社内 API gateway
  • local proxy
  • model router
  • reseller や forwarding service
  • research endpoint

この path に入ると、client はいくつかの signal を見ます。

SignalEffect
system timezone が Asia/Shanghai または Asia/Urumqi日付が YYYY-MM-DD から YYYY/MM/DD になる可能性がある
API base URL の hostname が domain list に一致するかToday's の apostrophe が特定の Unicode 文字に変わる
hostname に特定の AI lab keyword が含まれるかapostrophe が別の Unicode 文字に変わる

原文によると、domain list と keyword list は平文ではなく、base64 と XOR で軽く obfuscate されています。decode された keyword には AI company や model platform に関係する語が含まれ、domain list には中国の internet company、AI company、proxy、gateway、reseller 系の domain が含まれているとのことです。

なぜ気持ち悪いのか

検出したい目的そのものは不自然ではありません。model provider が API reseller、非公式 gateway、model routing、distillation pipeline を気にするのは理解できます。custom ANTHROPIC_BASE_URL は、たしかに有用な risk signal です。

問題は実装の表現です。

Claude Code は単なる Web widget ではありません。開発者は repo access、file write、test execution、dependency install、git operation、場合によっては browser や desktop control まで渡します。それだけの権限を渡すのは、coding agent が十分な文脈を持たないと役に立たないからです。

権限が強い client ほど、挙動は退屈であるべきです。ここでいう退屈とは、説明でき、監査でき、予測できるという意味です。custom API gateway を分類したいなら、明示的な field、documentation、release note、telemetry control、visible policy を使えばよいはずです。Unicode の apostrophe と日付 format に分類情報を埋め込むと、開発者はこう考え始めます。この一 bit がここに隠れているなら、他にも何かあるのではないか。

これは悪意の証明ではありません。むしろ trust design の失敗として見る方が正確です。目的は説明できるかもしれないが、表現方法が信頼を削っています。

実用上の影響

原文の見立てでは、通常のユーザーの多くはこの path を踏まないはずです。

ANTHROPIC_BASE_URL を設定していない場合、または公式 Anthropic API endpoint を使っている場合、日付文は普通のままです。注意すべきなのは、Claude Code を custom infrastructure に向けている人たちです。

具体的には次のような利用です。

  • 会社共通の API gateway
  • local debug proxy
  • multi-model router
  • third-party Claude API reseller
  • research middleware

これらの構成自体が悪いわけではありません。問題は、client が hostname を分類し、その結果を model に送る system context の中に encode する可能性がある点です。

signal としても強くない

対抗的に見れば、この marker は簡単に回避できます。hostname を変える、timezone を変える、process 起動を wrap する、client に patch を当てる。真剣に検出を避けたい相手なら、おそらく無効化できます。

つまり、この機能は強い abuse 対策にはなりにくい。むしろ、正当だが標準的ではない使い方をしている開発者を mark しやすい。会社 proxy を使っている、gateway 経由で debug している、cost や latency のために router を使っている、といったケースです。

原文で一番重要なのはここだと思います。隠れた marker は大きな security gain を生まない一方で、trust cost を確実に増やします。

この手の tool をどう見るか

この話は coding agent を見るための実用的な checklist になります。

model capability だけを見ない。client behavior も見るべきです。

  1. local environment information を system prompt に入れているか。
  2. どの environment variable、timezone、hostname、path が request に入るのか。
  3. それらの field は document されているか。
  4. telemetry、logging、policy control は見える形になっているか。
  5. client update のあと、挙動変化を audit できるか。

AI coding tool は local development environment の一部になりつつあります。単なる chat box ではありません。engineering asset を読み書きできる execution surface です。こうした tool は policy を enforce してもよいし、model を守ってもよいし、abuse を検出してもよい。ただし、その挙動が local trust boundary に近づくほど、明示的であるべきです。

engineering trust は、小さく、普通で、監査できる細部で積み上がります。

今回の日付文字列が重要なのはそのためです。不安なのは日付そのものではありません。高い権限を持つ developer tool が、自分の分類結果を見えない形で表現する選択をしたことです。

References

  1. Thereallo, Claude Code Is Steganographically Marking Requests