Key Changes
Output-guardrail replay safety
Serialized output-bearing approval checkpoints now fail closed with UserError when the SDK cannot prove which response owns a pending terminal tool output. Continue with the live RunState when possible, or start a new run from safe input instead of replaying ambiguous serialized items. When an output guardrail rejects a completed function-tool result used as final output, the SDK replaces rejected content in SDK-owned replay surfaces with Output withheld by an output guardrail., sanitizes current guardrail metadata, and preserves earlier accepted history. This does not undo external tool side effects or erase application-owned copies.
Complete guardrail batch results
Guardrails started in the same batch now settle before the runner surfaces a tripwire or execution failure. Completed sibling results remain available in run state while further run processing is halted.
Explicit OpenAI client configuration
OpenAIProvider now rejects organization or project when openAIClient is also supplied because provider-level values cannot modify an already-created client. Configure these values when constructing the OpenAI client, then pass that client through openAIClient.
What's Changed
- fix(core): redact blocked tool outputs and aliases from replay state by @seratch in #1712
- fix(openai): reject ignored explicit-client options by @seratch in #1718
Documentation & Other Changes
- docs: v01.6.1 release by @seratch in #1696
- docs: fix access token typo in connectors example by @Chair403 in #1716
- fix: keep Codex verification for development sandboxed by @seratch in #1707
- chore: update versions by @github-actions[bot] in #1717
New Contributors
Full Changelog: v0.16.1...v0.17.0