Claude apps gateway deployment and operations changedclaude-apps-gateway-deploy
Nearest release: v2.1.321, published an hour before upstream edited the page. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Upstream edited this page at 9 Nov 2026 21:00 UTC, give or take a minute or two: the time comes from Anthropic’s own sitemap rather than from a commit. This site recorded the change at 9 Nov 2026 21:07 UTC.
Upstream edited
Recorded here
Lines+14added
Lines−0removed
From line
169
where the diff opens
First seen
14 Aug 2026
this site's first read of the page
Recorded edits39to this page, all time
#### Write operational logs as JSON
The whole hunk
from line 169, old and new numbered
/
from line 169
169169 * `admin.denied` records a rejected admin-API auth attempt with the client IP, method, path, and a reason, without the presented key material: `invalid_key` when an `x-api-key` was presented but matched no configured key, `bearer_rejected` when only an `Authorization` header was presented and it didn't verify as a gateway session in `admin.admin_groups`, or `no_credentials` when neither header was presented
170170* **Operational logs**: human-readable `[gateway]`-prefixed lines for boot, warnings, and upstream errors. The `CLAUDE_GATEWAY_LOG_LEVEL` environment variable controls verbosity and accepts `debug`, `info`, `warn`, or `error`, with `info` as the default. At `debug`, each sign-in and refresh also logs the names, not the values, of the claims in the id\_token, plus the names of the userinfo claims when `userinfo_fallback` supplied any, so you can diagnose `email_claim` and `groups_claim` settings without logging PII. It doesn't affect audit events, which are always emitted.
171171
172#### Write operational logs as JSON
173
174If your log collector reads each line's level from a JSON field, set `CLAUDE_GATEWAY_LOG_FORMAT=json` in the gateway's environment. Requires Claude Code v2.1.319 or later on the gateway server.
175
176Each operational log line is then one object with `severity`, `time`, and `message`:
177
178```json theme={null}
179{"severity":"INFO","time":"2026-11-04T17:03:21.512Z","message":"claude gateway listening on http://0.0.0.0:8080"}
180```
181
182`severity` is the log level in capitals, with `warn` written as `WARNING`. A failed start is an `ERROR` line.
183
184Audit events, which also go to stderr, don't change. They carry `ts` and `evt`, and no `severity`.
185
172186### Health
173187
174188The gateway serves `GET /healthz` as a liveness probe and `GET /readyz` as a readiness probe. `/readyz` verifies the store is reachable. If you set [`store.readiness_grace_seconds`](https://code.claude.com/docs/en/claude-apps-gateway-config#store), `/readyz` keeps reporting ready for up to that many seconds after the store stops answering.
No line in this hunk matches that.