📚 ナレッジベース
Claude_Code_自動化スクリプトの401対策
最終更新 2026年07月15日 / 21_ナレッジベース/プロダクト開発/Claude_Code_自動化スクリプトの401対策.md
claude CLI を自動化スクリプトで使うと401で止まる → 1年トークンで根絶
問題
claude -p "..." を cron/シェルスクリプトから非対話実行すると、定期的にこのエラーで止まる:
API Error: 401 {"type":"error","error":{"type":"authentication_error","message":"Invalid authentication credentials"}}
原因
Max プランの /login(ブラウザOAuth)で取得したトークンは、スクリプト実行環境では自動更新されず、期限切れになると401。ANTHROPIC_API_KEY も未設定だと認証手段がなくなる。
解決=claude setup-token(1年有効・Maxプラン内・別課金なし)
大串が1回だけ実行(1年持つ):
claude setup-token
# → ブラウザOAuth認証 → 1年有効の長期トークンが出力される(ファイルには保存されない)
# 出力トークンを保存:
echo "出力されたトークン" > ~/.claude/claude_code_oauth_token
●●●●●● 600 ~/.claude/claude_code_oauth_token
スクリプト側(改修済み): 先頭でトークンファイルがあれば読む:
CLAUDE_TOKEN●●●●●●="$HOME/.claude/claude_code_oauth_token"
[ -f "$CLAUDE_TOKEN●●●●●●" ] && export CLAUDE_CODE_OAUTH_TOKEN="$(cat "$CLAUDE_TOKEN●●●●●●")"
→ claude CLI がこのトークンを使う。1年間401にならない。1年後に切れたら同じ claude setup-token で再生成。
認証方式の比較
| 方式 | 生成 | 期限 | 課金 | 用途 |
|---|---|---|---|---|
CLAUDE_CODE_OAUTH_TOKEN(推奨) |
claude setup-token |
1年 | Maxプラン内 | cron/スクリプト |
ANTHROPIC_API_KEY |
console.anthropic.com | 無期限 | 別途従量課金 | API |
/login |
ブラウザ | 短命・自動更新 | Maxプラン内 | 対話のみ(スクリプト不可) |
改修済みスクリプト(2026-07-15)
~/Obsidian/scripts/ の以下がトークンを読む+401検知でSlack/ログ通知するように改修済み:
- generate_x_posts_ogushi.sh(X投稿案 自動生成)
- auto_organize_inbox.sh(Inbox自動整理・10/15/20時)
→ 401で止まると Slack+ログに「claude setup-token を実行して保存」と復旧手順が出る。
関連
- 公式: code.claude.com/docs/en/authentication(長期トークン)/ headless(非対話実行)
- Claude_Code_セッション品質の差 / Claude_Code_容量不足対策