🦒

Claude code は環境変数 DEBUG を読んでいるみたい

2025/02/26に公開

こんにちは。 Claude code がリリースしました。私も1日遅れで使えるようになりましたが、賢さにびっくりしています。

そんな Claude code ですが、特定のディレクトリ配下で使うと、何やらデバッグ出力がやたら出るなということに気づきました。
内容は以下のようなものです。

Anthropic:DEBUG:response 200 https://api.anthropic.com/v1/messages?beta=true dZ [Headers] {
  [Symbol(map)]: [Object: null prototype] {
    date: [ 'Wed, 26 Feb 2025 03:16:18 GMT' ],
    'content-type': [ 'text/event-stream; charset=utf-8' ],
    'transfer-encoding': [ 'chunked' ],
    connection: [ 'keep-alive' ],
    'cache-control': [ 'no-cache' ],
    'anthropic-ratelimit-requests-limit': [ '120' ],
    'anthropic-ratelimit-requests-remaining': [ '118' ],
    'anthropic-ratelimit-requests-reset': [ '2025-02-26T03:16:17Z' ],
    'anthropic-ratelimit-input-tokens-limit': [ '300000' ],
    'anthropic-ratelimit-input-tokens-remaining': [ '282000' ],
    'anthropic-ratelimit-input-tokens-reset': [ '2025-02-26T03:16:20Z' ],
    'request-id': [ 'req_...' ],
    'anthropic-organization-id': [ '....' ],
    via: [ '1.1 google' ],
    'cf-cache-status': [ 'DYNAMIC' ],
    'x-robots-tag': [ 'none' ],
    server: [ 'cloudflare' ],
    'cf-ray': [ '917cc682af6119d8-KIX' ]
  }
} PassThrough {
  _readableState: ReadableState {
    highWaterMark: 16384,
    buffer: BufferList { head: null, tail: null, length: 0 },
    length: 0,
    pipes: [],
    awaitDrainWriters: null,
    [Symbol(kState)]: 1054736
  },
  _events: [Object: null prototype] {
    prefinish: [Function: prefinish],
    unpipe: [Function: onunpipe],
    error: [ [Function: onerror], [Function (anonymous)] ],
    close: [Function: bound onceWrapper] { listener: [Function: onclose] },
    finish: [Function: bound onceWrapper] { listener: [Function: onfinish] }
  },
  _eventsCount: 5,
  _maxListeners: undefined,
  _writableState: WritableState {
    highWaterMark: 16384,
    length: 0,
    corked: 0,
    onwrite: [Function: bound onwrite],
    writelen: 0,
    bufferedIndex: 0,
    pendingcb: 0,
    [Symbol(kState)]: 34357356,
    [Symbol(kBufferedValue)]: null
  },
  allowHalfOpen: true,
  [Symbol(kCapture)]: false,
  [Symbol(kCallback)]: null
}

これは1つ指示を出すとそのたびに複数回出力されるので、Claudeのメッセージが流れてしまうという辛みがりました。

使用している環境変数の差分に気がつき、解決しました

問題が発生していたのは.env ファイルを使っているプロジェクトで、DEBUG=true が有効になっていました。それを無効(=>false)にすることでデバッグ出力は止まりました。

つまり Claude code はプロジェクトで使っている環境変数とバッティングする可能性がありそうですね。

念の為 Claude code のソース読んでみる

とは言っても圧縮されて難読化されているのでさらっとしか見ていませんが、実際に process.env から DEBUG を読み込んでいることはわかりました。

ソースのキャプチャ

他にも気になる環境変数はないかなと調べましたが、使っているプロジェクトにバッティングしそうなものはなかったので一旦よしとします。気になる方は Claude code のソースを読んでみましょう。また、プロンプトもあるので、勉強になります。
直接ここで環境変数やプロンプトを貼るのは避けておきます。

ちなみに

Claude code で定義している tools ですが、実際にどんなツールが与えられているのか気になりますね。プロキシを建てて確認とかできそうな気がします。

今回は以上です。

追記

Claude code に対して Issue がありましたね

API call debug info is output to console

GitHubで編集を提案

Discussion