Repository navigation
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
- Use T3's existing Claude provider with
ANTHROPIC_BASE_URLpointing to a 9router gateway, selecting Claude Opus 5.5. - Send a prompt while the gateway's Claude accounts are rate limited. The gateway returns HTTP 503 containing an upstream 429
rate_limit_errorand an explicit cooldown such as(reset after 4m 6s). - The Claude SDK emits the error/result frames below without a native
rate_limit_event. - Inspect the failed turn: the normal usage-limit auto-resume controls are missing.
A deterministic server repro is to feed those frames into the existing Claude adapter test harness. No credentials or live exhausted account are required for that repro.
Expected behavior
Recognize the explicit upstream rate limit and reset time so the existing usage-limit recovery controls are available. If auto resume is enabled, the existing worker should continue the thread when that time arrives.
Actual behavior
The adapter records class: "provider_error", code: "api_error_503", retryable: null, and no resetAt. Both the recovery controls and worker require usage-limit/reset metadata, so changing the status classification alone is insufficient.
Impact
Major degradation or frequent failure: work stops and requires a manual retry after a known cooldown.
Version or commit
Observed on 0.0.46-nightly.20261008.2833 (a6ec88f7a716fc421bd22c2484881c44110f9375). The same classification path is present on main at c77a7b7eebd6ea8a3a63bbcaaa7c1707fe65c86e.
Environment
Ubuntu 24.04; T3 web client connected to a self-hosted server; existing Claude provider through 9router; Claude Opus 5.5; full-access permission mode.
Logs or stack traces
Sanitized SDK fields; provider hostname and request identifiers omitted:
assistant.error = "server_error"
result.subtype = "success"
result.is_error = true
result.terminal_reason = "api_error"
result.api_error_status = 503
result.result =
API Error: 503 [claude/claude-opus-5-5] [429]: {"type":"error","error":{"type":"rate_limit_error","message":"Please try again later."}} (reset after 4m 6s).
Workaround
Manually retry after the reported cooldown. The proposed adapter regression check does not constitute verification of a live scheduled continuation.
Activity