Skip to content

原文(日本語訳)

verboseトランスクリプト表示で空白行が表示されていた問題を修正しました。

原文(英語)

Fixed blank lines in verbose transcript view

概要

Claude Code 2.1.39では、verboseモード(詳細トランスクリプト表示)で不要な空白行が大量に挿入され、ログが読みにくくなっていた問題が修正されました。修正後は、適切な間隔で整理された読みやすいトランスクリプトが表示されるようになりました。

verboseモードとは

verboseモードは、Claude Codeの内部動作を詳細に表示するデバッグ機能です。APIリクエスト、ツール呼び出し、内部処理などの詳細なログを確認できます。

bash
# verboseモードの有効化
export CLAUDE_VERBOSE=1
claude

# または起動オプション
claude --verbose

発生していた問題

修正前の表示

bash
# 大量の空白行が挿入される

[DEBUG] User prompt received


[DEBUG] Sending API request



[DEBUG] Response received




[DEBUG] Tool execution: Read



[DEBUG] Tool result: Success





[DEBUG] Generating response

修正後の表示

bash
# 適切な間隔で表示

[DEBUG] User prompt received
[DEBUG] Sending API request
[DEBUG] Response received
[DEBUG] Tool execution: Read
[DEBUG] Tool result: Success
[DEBUG] Generating response

実践例

デバッグセッションでの利用

bash
# 問題のトラブルシューティング
export CLAUDE_VERBOSE=1
claude

# "Read the configuration file and analyze its structure"

# 修正前(空白行で読みにくい):
# [2026-02-11T10:23:45.123Z] DEBUG: Starting session
#
#
# [2026-02-11T10:23:45.234Z] DEBUG: Loading configuration
#
#
#
# [2026-02-11T10:23:45.345Z] DEBUG: Initializing API client
#
#
# ...

# 修正後(コンパクトで読みやすい):
# [2026-02-11T10:23:45.123Z] DEBUG: Starting session
# [2026-02-11T10:23:45.234Z] DEBUG: Loading configuration
# [2026-02-11T10:23:45.345Z] DEBUG: Initializing API client
# [2026-02-11T10:23:45.456Z] DEBUG: API client ready
# [2026-02-11T10:23:45.567Z] DEBUG: Processing user prompt

API呼び出しのデバッグ

bash
export CLAUDE_VERBOSE=1
claude

# API通信の詳細を確認

# 修正後の出力:
[DEBUG] API Request:
  Method: POST
  Endpoint: /v1/messages
  Model: claude-sonnet-4-5
  Max tokens: 4096
[DEBUG] Request headers:
  anthropic-version: 2024-01-01
  content-type: application/json
[DEBUG] Request sent (request_id: req_abc123)
[DEBUG] Waiting for response...
[DEBUG] Response received (234ms)
[DEBUG] Response status: 200 OK
[DEBUG] Token usage: 150 input, 320 output

ツール実行のトレース

bash
export CLAUDE_VERBOSE=1
claude

# "Search for all TypeScript files and analyze imports"

# 修正後の詳細ログ:
[DEBUG] Tool call: Glob
  Pattern: **/*.ts
  Path: /home/user/project
[DEBUG] Glob result: 45 files found
[DEBUG] Tool call: Read
  File: src/index.ts
  Lines: 1-350
[DEBUG] Read completed: 350 lines
[DEBUG] Tool call: Grep
  Pattern: ^import.*from
  Files: **/*.ts
[DEBUG] Grep result: 234 matches
[DEBUG] Analysis complete

エラートレース

bash
export CLAUDE_VERBOSE=1
claude

# エラー発生時の詳細ログ

# 修正後:
[DEBUG] Processing prompt
[DEBUG] Executing tool: Write
  File: /root/config.json
  Size: 1234 bytes
[ERROR] Tool execution failed
  Error: EACCES: permission denied
  Code: EACCES
  Path: /root/config.json
[DEBUG] Error handler invoked
[DEBUG] Preparing error response
[DEBUG] Sending error message to user

ログ出力の最適化

タイムスタンプの整列

bash
# 修正前(タイムスタンプと内容の間に空白行):
[2026-02-11T10:23:45.123Z]

DEBUG: Message

# 修正後(同じ行に表示):
[2026-02-11T10:23:45.123Z] DEBUG: Message

複数行メッセージの整形

bash
# 修正前:
[DEBUG] API Response:

{
  "id": "msg_123",

  "content": "...",

  "model": "claude-sonnet-4-5"

}

# 修正後:
[DEBUG] API Response:
{
  "id": "msg_123",
  "content": "...",
  "model": "claude-sonnet-4-5"
}

スタックトレースの表示

bash
# 修正前(各行の間に空白):
[ERROR] Stack trace:

  at Function.parse

  at APIClient.request

  at Session.sendPrompt


# 修正後(連続した行で表示):
[ERROR] Stack trace:
  at Function.parse (json.js:23)
  at APIClient.request (api.js:145)
  at Session.sendPrompt (session.js:67)

ログファイルへの出力

ファイル出力時の改善

bash
# verboseログをファイルに保存
export CLAUDE_VERBOSE=1
claude 2>&1 | tee claude-debug.log

# 修正前のファイルサイズ:
# -rw-r--r-- 1 user user 15M Feb 11 10:23 claude-debug.log
# (大量の空白行で肥大化)

# 修正後のファイルサイズ:
# -rw-r--r-- 1 user user 3.2M Feb 11 10:23 claude-debug.log
# (約80%のサイズ削減)

ログのフィルタリング

bash
# 特定のイベントのみ抽出

# 修正前(空白行が混在して見づらい):
cat claude-debug.log | grep "API"

# 修正後(連続したログで確認しやすい):
cat claude-debug.log | grep "API"
# [10:23:45.123] API Request: POST /v1/messages
# [10:23:45.234] API Response: 200 OK
# [10:23:45.345] API Token usage: 150/320

パフォーマンスへの影響

出力速度の向上

bash
# 大量のログ出力時のパフォーマンス

# 修正前:
# - 空白行の処理でオーバーヘッド
# - ターミナルレンダリングが遅延
# - スクロールがカクつく

# 修正後:
# - 不要な出力を削減
# - レンダリング速度向上
# - スムーズなスクロール

メモリ使用量の削減

bash
# 長時間セッションのメモリ使用量

# 修正前:
# トランスクリプトバッファ: 450MB(10,000行、大量の空白含む)

# 修正後:
# トランスクリプトバッファ: 95MB(10,000行、空白削減)
# → 約79%のメモリ削減

カスタマイズ設定

ログフォーマットの設定

json
// ~/.claude/settings.json
{
  "verbose": {
    "enabled": true,
    "format": "compact",        // "compact" or "detailed"
    "timestamp": true,
    "color": true,
    "blank_lines": "minimal"    // "none", "minimal", "standard"
  }
}

ログレベルの調整

bash
# ログレベルを指定
export CLAUDE_LOG_LEVEL=debug    # debug, info, warn, error
claude --verbose

# 特定のカテゴリのみ表示
export CLAUDE_VERBOSE_FILTER="api,tools"
claude --verbose

注意点

  • ログのサイズ: verboseモードでは大量のログが出力されます。ディスク容量に注意してください
  • パフォーマンス: ログ出力はわずかにパフォーマンスに影響します。本番環境では無効化を推奨
  • 機密情報: verboseログにはAPIキーやファイル内容が含まれる可能性があります。共有時は注意してください
  • ターミナルのスクロールバッファ: 大量のログが出力される場合、ターミナルのスクロールバッファ設定を確認してください

トラブルシューティング

まだ空白行が表示される場合

bash
# Claude Codeのバージョンを確認
claude --version
# 2.1.39以降であることを確認

# 設定をリセット
claude config reset

# キャッシュをクリア
rm -rf ~/.claude/cache

ログが表示されない場合

bash
# verboseモードが有効か確認
echo $CLAUDE_VERBOSE
# 出力: 1

# 標準エラー出力も表示
claude --verbose 2>&1

ログのフォーマットを変更

bash
# JSONフォーマットで出力
export CLAUDE_VERBOSE_FORMAT=json
claude --verbose

# 出力例:
# {"timestamp":"2026-02-11T10:23:45.123Z","level":"debug","message":"API Request sent"}

ベストプラクティス

効果的なデバッグ

bash
# 必要な情報のみフィルタリング
export CLAUDE_VERBOSE=1
claude 2>&1 | grep -E "ERROR|WARN"

# タイムスタンプで範囲を絞る
claude 2>&1 | grep "10:23:"

ログのアーカイブ

bash
# 日付付きでログを保存
export CLAUDE_VERBOSE=1
LOG_FILE="claude-debug-$(date +%Y%m%d-%H%M%S).log"
claude 2>&1 | tee "$LOG_FILE"

CI/CD環境での利用

yaml
# GitHub Actions での使用例
- name: Debug Claude Code
  run: |
    export CLAUDE_VERBOSE=1
    export CLAUDE_VERBOSE_FORMAT=json
    claude --non-interactive "analyze codebase" > debug.log 2>&1

- name: Upload debug logs
  if: failure()
  uses: actions/upload-artifact@v3
  with:
    name: claude-debug-logs
    path: debug.log

関連情報