From 3546a353543d6d82002d3bb00265c5fcb1a6320d Mon Sep 17 00:00:00 2001 From: Eyejoker Date: Sat, 14 Mar 2026 19:01:30 +0900 Subject: [PATCH] refactor: skip token auto-refresh when using env-based auth When CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY is set in .env, the credentials.json refresh loop is unnecessary. setup-token generates a 1-year token, making auto-refresh redundant. --- src/token-refresh.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/token-refresh.ts b/src/token-refresh.ts index 7e8f7c4..f92046b 100644 --- a/src/token-refresh.ts +++ b/src/token-refresh.ts @@ -13,6 +13,7 @@ import path from 'path'; import { logger } from './logger.js'; import { DATA_DIR } from './config.js'; +import { readEnvFile } from './env.js'; const TOKEN_URL = 'https://platform.claude.com/v1/oauth/token'; const FALLBACK_TOKEN_URL = 'https://api.anthropic.com/v1/oauth/token'; @@ -213,6 +214,18 @@ async function checkAndRefresh(): Promise { let refreshInterval: ReturnType | null = null; export function startTokenRefreshLoop(): void { + // Skip if using env-based auth (API key or long-lived setup-token) + const envVars = readEnvFile(['ANTHROPIC_API_KEY', 'CLAUDE_CODE_OAUTH_TOKEN']); + if ( + envVars.ANTHROPIC_API_KEY || + process.env.ANTHROPIC_API_KEY || + envVars.CLAUDE_CODE_OAUTH_TOKEN || + process.env.CLAUDE_CODE_OAUTH_TOKEN + ) { + logger.info('Using env-based auth, token auto-refresh disabled'); + return; + } + // Only run if credentials file exists (skip for API key-only setups) const creds = readCredentials(); if (!creds?.claudeAiOauth) {