Skip to content

原文(日本語に翻訳)

--setting-sources でユーザーを指定しない場合、バックグラウンドクリーンアップが cleanupPeriodDays を無視して30日以上経過した会話履歴を削除してしまう問題を修正しました。

原文(英語)

Fixed --setting-sources without user causing background cleanup to ignore cleanupPeriodDays and delete conversation history older than 30 days

概要

--setting-sources オプションでユーザー設定ソースを指定しない場合、バックグラウンドのクリーンアッププロセスが cleanupPeriodDays の設定値を正しく読み込めず、デフォルトの30日以上の会話履歴を削除してしまうバグがありました。このアップデートにより、設定が正しく適用され、意図しない会話履歴の削除が防止されます。

基本的な使い方

json
// settings.json
{
  "cleanupPeriodDays": 90  // 90日間の履歴を保持
}
bash
# 修正前: --setting-sources でユーザーを省略すると
# cleanupPeriodDays が無視されて30日以上の履歴が削除される

# 修正後: cleanupPeriodDays が正しく尊重される
claude --setting-sources project  # ユーザー設定なしでも正しく動作

実践例

会話履歴の保持期間設定

json
// ~/.claude/settings.json
{
  "cleanupPeriodDays": 365,  // 1年間保持
  "storage": {
    "conversationHistoryPath": "~/.claude/history"
  }
}
bash
# 設定を確認
claude /config | grep "cleanupPeriod"

# バックグラウンドクリーンアップの動作確認
# 修正後は設定値が正しく適用される

プロジェクト設定のみを使用するシナリオ

bash
# CI/CD環境など、ユーザー設定を使わないシナリオ
# プロジェクト設定のみを使用

# .claude/settings.json(プロジェクト設定)
cat .claude/settings.json
# {
#   "cleanupPeriodDays": 7,  // プロジェクト環境では7日間のみ保持
#   ...
# }

# プロジェクト設定のみで実行
claude --setting-sources project "タスクを実行して"

# 修正後: cleanupPeriodDays=7 が正しく適用される
# 修正前: 30日以上の履歴が誤って削除される可能性があった

重要な会話履歴のバックアップ

bash
#!/bin/bash
# クリーンアップ前に重要な会話履歴をバックアップするスクリプト

backup_conversations() {
  local backup_dir="$HOME/claude-history-backup/$(date +%Y%m%d)"
  mkdir -p "$backup_dir"
  
  # 会話履歴をバックアップ
  cp -r ~/.claude/sessions/* "$backup_dir/" 2>/dev/null
  
  echo "バックアップが完了しました: $backup_dir"
  echo "バックアップされたファイル数: $(ls $backup_dir | wc -l)"
}

# クリーンアップ設定の確認
check_cleanup_settings() {
  local period=$(cat ~/.claude/settings.json | python3 -c "
import json, sys
data = json.load(sys.stdin)
print(data.get('cleanupPeriodDays', 30))
")
  echo "現在のクリーンアップ期間: ${period}日"
}

backup_conversations
check_cleanup_settings

マネージド環境での設定管理

bash
# マネージド設定環境(企業環境など)での使用

# 管理者側の設定でcleanupPeriodDaysを長く設定
# ユーザー側は独自の設定ソースなしでも動作する

# 設定ソースの優先順位:
# 1. コマンドラインオプション
# 2. プロジェクト設定 (.claude/settings.json)
# 3. ユーザー設定 (~/.claude/settings.json)
# 4. マネージド設定

# 修正後: すべての組み合わせでcleanupPeriodDaysが正しく適用される
claude --setting-sources managed,project "作業を続けて"

注意点

  • このバグは --setting-sources でユーザー設定ソースを省略した場合にのみ発生していました
  • 通常の使用では影響がなかった可能性が高いですが、CI/CD環境や自動化スクリプトで影響を受けた可能性があります
  • 修正後は cleanupPeriodDays が設定されていない場合、デフォルト値(30日)が適用されます
  • 重要な会話履歴は定期的にバックアップすることを推奨します
  • cleanupPeriodDays を長く設定すると、ストレージ使用量が増加することに注意してください

関連情報