release: 0.22.1 - #4576
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9b14fff3dd
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
5c67dd0 to
cd7cce0
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cd7cce0e6b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
cd7cce0 to
90857dc
Compare
Release readiness review (v0.22.0 -> TARGET release/v0.22.1)
This is a release readiness report done by
$final-release-reviewskill.Diff
v0.22.0...90857dc
Release intent
Release call
🟢 GREEN LIGHT TO SHIP The patch candidate is version-consistent, contains no confirmed regression or incompatible public-contract change, and is exactly one release-manifest commit ahead of current
origin/main.Scope summary
Risk assessment (ordered by impact)
Customizable terminal output-guardrail placeholders
RunConfig.output_guardrail_blocked_messageis appended as an optional field with the existing placeholder as its default. Invalid, asynchronous, empty, or failing formatter results fall back to the default, and rejected output and guardrailoutput_infoare not supplied to the formatter. Streaming and non-streaming sanitization use the resolved placeholder consistently.src/agents/run_config.py,src/agents/run.py,src/agents/run_internal/blocked_output.py,src/agents/run_internal/run_loop.py,tests/test_run_config.py,tests/test_agent_runner_streamed.pyVoice public contract and OpenAI client ownership
TTSCustomVoice, with no removals. OpenAI and Voice providers reuse the shared default client only when all provider options areNone. Streamed STT derives its endpoint, authentication, headers, and query parameters from the selected client, forwards language and prompt settings, and uses monotonic event deadlines.src/agents/models/openai_provider.py,src/agents/models/_openai_websocket.py,src/agents/voice/,tests/voice/,tests/fixtures/released_api_contract.jsonDocker labels and the durable RunState boundary
DockerSandboxClientOptionsandDockerSandboxSessionStateappendlabelswith an empty default. RunState schema 1.17 records the new field, older payloads without labels restore as{}, all previously supported schema versions remain readable, replacement containers receive persisted labels, and existing containers are checked only for the labels the state requires.src/agents/run_state.py,src/agents/sandbox/sandboxes/docker.py,tests/sandbox/test_compatibility_guards.py,tests/sandbox/test_docker.py,tests/fixtures/run_state/Model terminal behavior and replay sanitization
created_bymetadata.finish_reason="length"before any text, refusal, or tool call raiseModelBehaviorErrorwhile retaining request and usage evidence. Run-item replay strips top-level and nestedcreated_byfields through the shared sanitizer without mutating the original item. Any-LLM Chat Completions keepsModelSettings.extra_bodynested rather than merging it into top-level call arguments.src/agents/models/chatcmpl_stream_handler.py,src/agents/models/openai_chatcompletions.py,src/agents/extensions/models/any_llm_model.py,src/agents/items.py,tests/models/,tests/test_items_helpers.pyStateful runtime corrections and public-contract enforcement
OutputGuardrailBlockedMessageFormatteras the third public type alias.src/agents/mcp/manager.py,src/agents/mcp/server.py,src/agents/realtime/session.py,src/agents/tracing/provider.py,src/agents/usage.py,src/agents/extensions/visualization.py,integration_tests/_contract_support.py,tests/test_released_api_contract.pyDocumentation coverage (non-blocking)
354ab7e8f58959687892f359debf41f96799ff29; its latest code and security reviews completed with no findings.extra_body;created_byreplay sanitization; Realtime debounce thresholds; Docker labels; tracing flush behavior; usage isolation; visualization identity; and ComputerTool model-selection precedence.Notes
origin/mainwere refreshed immediately before this release call; the latest release tag remainsv0.22.0.TARGETis the cleanrelease/v0.22.1checkout at90857dc76b707549eb8d019895a14a59656adb8a.origin/mainboth resolve to233467994fac7e7dbd868931573cc9a4302c0a16.pyproject.toml, editableopenai-agentslock entry, and released contract agree on v0.22.1.233467994fac7e7dbd868931573cc9a4302c0a16asbaseline_commitand freezes 396 callables, 230 canonical imports, 79 public modules, 20 properties, three type aliases, and four TypedDicts.RunConfig, whereoutput_guardrail_blocked_messageis appended with aNonedefault.pyproject.toml,uv.lock, andtests/fixtures/released_api_contract.json.