# Helix 0.92.0: Binary request and response bodies

> Authenticated calls carry bodies byte for byte, so binary uploads and downloads work end to end. Redirects come back to you instead of being followed.

- Released: 7 Aug 2026 (2026-08-07)
- Packages: @trayai/helix-cli@0.92.0, @trayai/helix-sdk@0.92.0

## Headline changes

### Changed: `ctx.http.authed()` sends and returns bodies verbatim

Strings, `Uint8Array`, `ArrayBuffer`, `Blob`, `FormData`, and streams are all accepted and sent unchanged, so a string body is no longer rejected and never arrives JSON-quoted. Plain objects and arrays are still serialized as JSON. Binary uploads to a third-party API work end to end. Request bodies cap at 16 MB; use the target API's multipart or chunked flow above that.

Docs: https://helix.tray.ai/documentation/reference/context/http/

### Changed: Response bodies are decoded by content type

JSON is parsed as before, textual types come back as a string, and anything else is returned as raw bytes, so a binary download arrives unmangled instead of corrupted by a text decode.

Docs: https://helix.tray.ai/documentation/reference/context/http/

## Other changes

### Changed

- Redirect responses are returned to your code with their `location` header (docs: https://helix.tray.ai/documentation/reference/context/http/)
  3xx responses are no longer followed automatically, so you decide whether to follow one.
- `SdkError` from the authenticated HTTP path carries a `code` on `error.detail` (docs: https://helix.tray.ai/documentation/reference/context/http/)
- The MCP credential test tool handles binary data (docs: https://helix.tray.ai/documentation/getting-started/building-with-claude/)
  `tray_call_credential_broker` takes a `bodyBase64` argument for raw bytes, mutually exclusive with `body`, and returns binary responses inline up to 64 KiB. It accepts a raw string body, sends it verbatim, returns the upstream status and headers unchanged including 4xx and 5xx, and gives rejected calls a machine-readable `code`.

### Removed

- `SdkError.unsupportedBodyType` is no longer thrown (docs: https://helix.tray.ai/documentation/reference/context/http/)
  The body types that used to raise it are now sent verbatim, so there is nothing left to reject.

---

Canonical: https://helix.tray.ai/documentation/releases/0920/
This file: https://helix.tray.ai/documentation/releases/0920.md
The full changelog: https://helix.tray.ai/documentation/releases.md
