docs/proxy/accounts.md
refresh_token (noise + wasted requests).Account files can be marked as disabled on disk (accounts/<id>.json):
disabled: truedisabled_at: <unix_ts>disabled_reason: <string>The proxy token pool loader skips such accounts:
TokenManager::load_single_account(...) in src-tauri/src/proxy/token_manager.rsinvalid_grantIf an account refresh fails with invalid_grant during token refresh, the proxy marks it disabled and removes it from the in-memory pool:
TokenManager::get_token(...) in src-tauri/src/proxy/token_manager.rsTokenManager::disable_account(...) in src-tauri/src/proxy/token_manager.rsThis prevents endless rotation attempts against a dead account.
When refreshing quotas for all accounts, disabled ones are skipped immediately:
refresh_all_quotas(...) in src-tauri/src/commands/mod.rsThe accounts UI reads disabled fields and shows a “Disabled” badge and tooltip, and disables “switch / refresh” controls:
disabled* fields: src/types/account.tssrc/components/accounts/AccountCard.tsxsrc/components/accounts/AccountRow.tsxsrc/pages/Accounts.tsxTranslations:
Token refresh failures returned to API clients no longer include account emails:
TokenManager::get_token(...) in src-tauri/src/proxy/token_manager.rshandle_messages(...) in src-tauri/src/proxy/handlers/claude.rsinvalid_grant, it usually means the refresh_token was revoked or expired.disabled: true.