The gzip decision now records exactly why it skipped, though compression stays off without a server value.
The compression check became a full decision path with named skip reasons, but both gates still default off.
tengu_gzip_request_bodies Not enough to sayNothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.
This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.236: not a boolean we can read
Read once, for one account on one subscription tier, against v2.1.236. It isn't a statement about your account. What a flag value here can and cannot tell you
What's wrong with this entry?
In 2.1.235 this was a single expression checking one environment variable and one flag. It is now a function that returns a reason for every skip: not_bun_runtime, below_min_size for bodies under 4096 characters, non_string_body, and the transport reasons unix_socket, proxy, mtls, custom_ca. Both gates default to off, so absent a server value nothing is compressed.
tengu_atomic_oceanandtengu_gzip_request_bodiesare OR'd;CLAUDE_CODE_GZIP_REQUEST_BODIESoverrides either way, and forcing it on still respects the in-process kill switch.- New this release: a 400, 403 or 415 rejection of a compressed body from an Anthropic response causes an uncompressed resend and turns compression off, optionally saved to the global config key
gzipRequestBodiesLatchedOffwith a timestamp and status, honoured for 7 days and then cleared withtengu_gzip_request_body_latch_cleared. - Request telemetry now carries
requestBodyEncoding,gzipSkipReasonandgzipFallbackStatus.
not_bun_runtime
Strings lifted out of the shipped bundle, so the claim above can be checked against them.