What
When Claude Code publishes an Artifact frame (frame_publish), it now compresses large bodies with gzip, a standard way of shrinking data before sending it. How it decides:
- It first tests a sample to see how well the data compresses.
- It sends the body uncompressed if gzip could not finish "inside the server's 60-second read limit".
- If the server rejects the compressed body, it resends it uncompressed and may stop using gzip from then on.
The usage data it reports gains artifact_publish_gzip_request_body, and a bad_json reason is recorded when the body is not valid data.
Why
Large publishes send less data. The fallbacks mean a publish still goes through when compression would be too slow or the server does not accept it.