Skip to content

Release 0.16.0#3150

Merged
seratch merged 1 commit intomainfrom
release/v0.16.0
May 7, 2026
Merged

Release 0.16.0#3150
seratch merged 1 commit intomainfrom
release/v0.16.0

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented May 6, 2026

Release readiness review (v0.15.3 -> TARGET ea965bb)

This is a release readiness report done by $final-release-review skill.

Diff

v0.15.3...ea965bb

Release call:

🟢 GREEN LIGHT TO SHIP No confirmed blocking regression, breaking API mismatch, data-loss issue, security regression, or packaging/runtime break was found; remaining items are targeted validation and release-note follow-ups.

Scope summary:

  • 54 files changed (+2480/-925); key areas touched: runtime model defaults and model settings resolution, MCP tool-name prefixing, local function-tool concurrency, max_turns=None, RunState schema 1.10, Chat Completions streaming tool-call indexes, sandbox tar/symlink safety, docs/translations, and tests.
  • Version bump is 0.15.3 -> 0.16.0.
  • Commit range includes 12 commits: sandbox symlink hardening, max_turns=None, default model switch, translated docs, hashable sandbox permissions, MCP server-prefixed tool names, tool concurrency config, Chat Completions streaming index fix, realtime docs, and release version bump.

Risk assessment (ordered by impact):

  1. Default model changed from gpt-4.1 to gpt-5.4-mini

    • Risk: 🟡 MODERATE. This is an intentional user-facing default behavior change when users do not explicitly set a model, with possible output, latency, pricing, or availability differences.
    • Evidence: src/agents/models/default_models.py now returns gpt-5.4-mini; src/agents/agent.py documentation and implicit default settings logic were updated; pyproject.toml bumps to 0.16.0.
    • Files: src/agents/models/default_models.py, src/agents/agent.py, src/agents/run_internal/turn_preparation.py, tests/models/test_default_models.py, tests/test_run_config.py
    • Action: Confirm release notes call out the default model change, then run uv run pytest tests/models/test_default_models.py tests/test_run_config.py -q; pass criteria: tests pass and the note tells users to set OPENAI_DEFAULT_MODEL or Agent(model=...) to preserve the prior default.
  2. RunState schema bumped to 1.10 for nullable max_turns

    • Risk: 🟡 MODERATE. New snapshots that serialize max_turns: null require the newer SDK, while older SDKs intentionally reject newer schema versions.
    • Evidence: CURRENT_SCHEMA_VERSION changed from 1.9 to 1.10, SCHEMA_VERSION_SUMMARIES adds nullable max_turns, and tests cover None round-trip.
    • Files: src/agents/run_state.py, tests/test_run_state.py, tests/test_max_turns.py
    • Action: Run uv run pytest tests/test_run_state.py -q -k 'schema or max_turns_none' tests/test_max_turns.py -q; pass criteria: schema/version tests and non-streamed/streamed max_turns=None tests pass. Include a release-note line that snapshots written by 0.16.0 use schema 1.10.
  3. Sandbox hydration now rejects external symlink targets

    • Risk: 🟡 MODERATE. This security hardening can reject workspace archives that previously hydrated successfully if they contain absolute symlink targets or links escaping the archive root.
    • Evidence: sandbox backends now call validate_tar_bytes/validate_tarfile/safe_extract_tarfile with allow_external_symlink_targets=False; tests assert rejection before upload or extraction.
    • Files: src/agents/sandbox/util/tar_utils.py, src/agents/extensions/sandbox/*/sandbox.py, src/agents/sandbox/sandboxes/docker.py, src/agents/sandbox/sandboxes/unix_local.py, tests/sandbox/test_tar_utils.py, tests/sandbox/test_extract.py, tests/extensions/sandbox/test_vercel.py
    • Action: Run uv run pytest tests/sandbox/test_tar_utils.py tests/sandbox/test_extract.py tests/extensions/sandbox/test_vercel.py -q; pass criteria: strict symlink rejection tests pass. Mention this as a security hardening behavior change in release notes.
  4. Opt-in MCP server-prefixed tool names add new public naming behavior

    • Risk: 🟢 LOW. The behavior is disabled by default and has targeted tests for collisions, normalization, handoff/local-tool reservation, and streaming/non-streaming runner paths.
    • Evidence: MCPConfig adds include_server_in_tool_names; MCPUtil builds deterministic ASCII-safe names up to 64 chars and preserves original MCP invocation names; docs describe the option.
    • Files: src/agents/agent.py, src/agents/mcp/util.py, docs/mcp.md, tests/mcp/test_mcp_util.py, tests/mcp/test_runner_calls_mcp.py
    • Action: Run uv run pytest tests/mcp/test_mcp_util.py tests/mcp/test_runner_calls_mcp.py -q; pass criteria: prefixed-name and duplicate-name tests pass.
  5. Local function-tool concurrency limit is a new public RunConfig option

    • Risk: 🟢 LOW. Default None preserves existing “start all calls” behavior, and the new dataclass is appended after sandbox, preserving positional compatibility.
    • Evidence: ToolExecutionConfig(max_function_tool_concurrency=None) defaults to old behavior; constructor compatibility tests assert sandbox position is preserved and tool_execution is appended.
    • Files: src/agents/run_config.py, src/agents/run.py, src/agents/__init__.py, src/agents/run_internal/tool_execution.py, tests/test_run_step_execution.py, tests/test_source_compat_constructors.py
    • Action: Run uv run pytest tests/test_run_step_execution.py tests/test_source_compat_constructors.py -q -k 'concurrency or tool_execution or run_config'; pass criteria: concurrency ordering/failure tests and positional compatibility tests pass.
  6. Chat Completions streaming tool-call output indexes were stabilized

    • Risk: 🟢 LOW. The change targets a regression-prone streaming edge case but includes focused tests for fallback and mixed streamed/fallback tool calls.
    • Evidence: StreamingState.function_call_output_idx now allocates stable output indexes when tool-call deltas appear; new tests assert unique indexes and preserved ordering.
    • Files: src/agents/models/chatcmpl_stream_handler.py, tests/models/test_openai_chatcompletions_stream.py
    • Action: Run uv run pytest tests/models/test_openai_chatcompletions_stream.py -q; pass criteria: streaming function-call index tests pass.

Notes:

  • Latest release tag was determined from local tags only with git tag -l 'v*' --sort=-v:refname | head -n1: v0.15.3.
  • TARGET was determined with git rev-parse HEAD: ea965bb13f6735085cea49ef7a2b34c2cf7354f6.
  • Working tree status was clean.
  • Local verification was not run as part of this report; assume CI has run the mandatory release checks unless this job is configured otherwise.

@github-actions github-actions Bot added this to the 0.17.x milestone May 6, 2026
@seratch seratch modified the milestones: 0.17.x, 0.16.x May 6, 2026
@github-actions github-actions Bot force-pushed the release/v0.16.0 branch 4 times, most recently from 5782ce7 to 0912c43 Compare May 6, 2026 23:52
@github-actions github-actions Bot force-pushed the release/v0.16.0 branch from 0912c43 to ea965bb Compare May 7, 2026 00:04
@seratch seratch merged commit 9f361ba into main May 7, 2026
@seratch seratch deleted the release/v0.16.0 branch May 7, 2026 00:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant