What
- The gateway server now reads a
store.connect_timeout_secondsconfig value, wraps its initial Postgres connection attempt in a retrying wrapper, and shows a clearer boot error naming that setting if the connection fails. - It logs a throttled (once-per-minute) warning when sign-in rate limits (
rate_limits.device_authorization.max,rate_limits.device_verify.max) are hit, and a new warning when a request carries anX-Forwarded-Forheader but its source isn't listed inlisten.trusted_proxies. - When the
/oauth/device_authorizationor/device(verify) endpoints hit these same rate limits, the response to the client now explains that the limit may be caused by shared-network noise and points admins at the specific config keys to adjust, instead of a generic "Too many attempts" message. Each rate-limited path also now fires a telemetry call.
Why These changes make it much easier for administrators running a self-hosted gateway to diagnose why sign-ins are being rate-limited or connections are failing, instead of seeing generic errors with no pointer to the relevant setting.
Names in the bundlelisten.trusted_proxiesrate_limits.device_authorization
Documented inclaude-code/claude-apps-gateway
The entry above is what we published on the day. These lines were added later, as Anthropic's own pages caught up, and they sit beside the original rather than replacing it.
Confirmed since
Anthropic's documentation has since written up listen.trusted_proxies, on Claude apps gateway deployment and operations.
* **The gateway can't see past your load balancer.** Without [`listen.trusted_proxies`](/docs/en/claude-apps-gateway-config#listen), every developer appears to come from the load balancer's address and shares one limit. Set it before anyth…claude-apps-gateway-deploy see the edit
One source agreesOne thing we can check says the same as this entry.
Anthropic's documentation agrees
Anthropic's documentation has since written up listen.trusted_proxies, on Claude apps gateway deployment and operations.