原文(日本語に翻訳)
拒否エラーメッセージを改善しました:利用可能な場合、API提供の説明を含めるようになりました。
原文(英語)
Improved refusal error messages to include the API-provided explanation when available
概要
Claude APIがリクエストを拒否する際、APIは拒否の理由を説明する情報を提供することがあります。このアップデートにより、Claude Codeはその説明をエラーメッセージに含めるようになりました。これにより、ユーザーはなぜリクエストが拒否されたのかをより明確に理解でき、適切な対処が取りやすくなります。
基本的な使い方
bash
# 改善前のエラーメッセージ
# Error: Request refused
# 改善後のエラーメッセージ(APIが説明を提供した場合)
# Error: Request refused
# API explanation: This content violates usage policies regarding [specific policy].
# For more information, see: https://anthropic.com/policies
# APIが説明を提供しない場合は従来どおりのメッセージが表示される実践例
コンテンツポリシーによる拒否の確認
bash
# ポリシーに抵触する可能性があるリクエストの場合
claude "..."
# 改善されたエラーメッセージ:
# Request refused: The requested content cannot be generated.
# API explanation: This request involves content that conflicts with
# Anthropic's usage policies on [category].
# Learn more: https://anthropic.com/policies/usage
# ユーザーはこの説明を基に、リクエストを適切に調整できる組織レベルのポリシー制限
bash
# 組織の管理者がカスタムポリシーを設定している場合
# 管理者から提供されたカスタム説明が表示される
# 例:
# Request refused: This action is not permitted.
# API explanation: Your organization has restricted the use of external
# code execution tools. Contact your admin for exceptions.
# 組織の設定を確認
claude /configレート制限やクォータによる拒否
bash
# レート制限に達した場合(APIが詳細情報を提供)
# 改善されたエラーメッセージ:
# Request refused: Rate limit exceeded.
# API explanation: You have exceeded your hourly request quota.
# Current limit: 1000 requests/hour.
# Reset time: 14:00 UTC
# エラーメッセージの情報を活用したリトライロジック
#!/bin/bash
max_retries=3
retry_count=0
while [ $retry_count -lt $max_retries ]; do
output=$(claude "タスクを実行して" 2>&1)
exit_code=$?
if [ $exit_code -eq 0 ]; then
echo "$output"
break
elif echo "$output" | grep -q "Rate limit exceeded"; then
# エラーメッセージからリセット時間を取得して待機
echo "レート制限に達しました。1分後にリトライします..."
sleep 60
retry_count=$((retry_count + 1))
else
echo "エラー: $output"
break
fi
doneデバッグ時のエラー情報活用
bash
# スクリプトでのエラーハンドリング
#!/bin/bash
handle_claude_error() {
local error_output="$1"
# APIの説明が含まれているか確認
if echo "$error_output" | grep -q "API explanation:"; then
api_explanation=$(echo "$error_output" | grep "API explanation:" | cut -d: -f2-)
echo "詳細な拒否理由: $api_explanation"
# ログファイルに記録
echo "$(date): Refusal - $api_explanation" >> claude_errors.log
else
echo "リクエストが拒否されました(理由不明)"
fi
}
result=$(claude "タスクを実行して" 2>&1) || handle_claude_error "$result"注意点
- APIが説明を提供しない場合は、従来のエラーメッセージが表示されます
- 説明の内容はAPIが提供するものであり、Claude Codeが生成するものではありません
- 組織の管理者はカスタムの拒否メッセージを設定できる場合があります
- プライバシーやセキュリティ上の理由から、説明が省略される場合もあります
- エラーメッセージの情報をログに記録することで、パターンの分析が可能になります