v1.29.0
Behavioral compatibility notes
The following merged PRs were labeled release-note-required and are called out explicitly in this release:
What's Changed
- [codex] Require chat-template tokenizer for custom token counts by @neubig in #3625
- Clamp max_tokens for Bedrock joint input/output budget by @juanmichelini in #3622
- Add private shell AST command view helpers by @Fieldnote-Echo in #3609
- test(sdk): add golden-snapshot oracle for the rendered system prompt by @VascoSch92 in #3624
- fix(sdk): sort skill/plugin/extension discovery for deterministic prompts by @VascoSch92 in #3630
- [Prompt registry] Phase 1 — Typed core (PromptSection / PromptContext / PromptRegistry) by @VascoSch92 in #3634
- refactor(sdk): curate ACP model lists — verified against pinned CLIs, current generations only by @simonrosenberg in #3653
- feat(sdk): deprecate ACPAgentSettings.llm credentials — create_agent no longer reads llm.api_key/base_url by @simonrosenberg in #3652
- fix(sdk): apply claude-code initial ACP model via set_session_model (claude-agent-acp ignores _meta) by @simonrosenberg in #3655
- ci: validate deprecation runway schedules by @enyst in #3657
- refactor(metrics): surface cache-hit-rate as a derived Metrics property by @VascoSch92 in #3650
- fix(sdk): pin lmnr below incompatible release by @enyst in #3662
- fix(llm): enable prompt caching for claude-fable-5 by @juanmichelini in #3661
- [codex] Isolate ACP npx launches from npm env by @neubig in #3665
- feat: add SOUL.md support for agent identity customization by @smolpaws in #3535
- chore(llm): simplify model feature cache list by @enyst in #3674
- chore: remove the cloud_proxy router by @hieptl in #3326
- fix(terminal): disable interactive pagers to prevent PTY hijack by @VascoSch92 in #3684
- feat: load multiple org/user skill repositories per request by @hieptl in #3680
- Add LLM subscription auth endpoints by @neubig in #3367
- Add conversation observability metadata by @neubig in #3270
- Add conversation attribution to Laminar traces by @neubig in #3580
- [codex] fix ACP MCP auth forwarding by @neubig in #3667
- Fix Apptainer tokenizer binds and token condensation by @neubig in #3641
- fix: redact credentials from plugin/extension URL logs by @jpshackelford in #2154
- [codex] Refresh condenser LLM on model switch by @neubig in #3499
- ci: accept cloud-proxy REST API breakage by @enyst in #3687
- [codex] Support regex CORS origins by @neubig in #3664
- fix(file_editor): write atomically and fall back to UTF-8 to prevent data loss by @shanemort1982 in #3679
- feat(subagent): give spawned sub-agents a condenser by default by @ak684 in #3696
- feat(workflow): add wf.pipeline for barrier-free staged fan-out by @ak684 in #3697
- feat(workflow): drop whole elements when truncating reduce input by @ak684 in #3700
- feat(task): enforce a per-run cost budget for agents and sub-agents by @ak684 in #3703
- [Prompt registry] Phase 2 — Port static-tier sections behind the snap… by @VascoSch92 in #3659
- chore: remove already-removable deprecated leftovers (marketplace comment, skills tombstone, display_dict) by @VascoSch92 in #3734
- test(settings): add ACPAgentSettings mcp_config secret-preservation tests by @simonrosenberg in #3711
- [Prompt registry] Phase 2 — Port dynamic-tier sections behind the snapshot by @VascoSch92 in #3683
- feat(settings): delegate PersistedSettings.update to apply_agent_settings_diff by @simonrosenberg in #3712
- feat(acp): carry provider key onto ACPAgent via create_agent by @simonrosenberg in #3692
- ci: pin oasdiff version to avoid GitHub API rate-limit flake by @VascoSch92 in #3739
- fix: PLTF-2955 skip PR description validation for Dependabot PRs by @aivong-openhands in #3685
- fix: coerce list-of-strings to string for str-only tool args by @VascoSch92 in #3735
- Align PR template human section validation by @enyst in #3693
- fix: expand secrets in MCP tool parameters by @jpshackelford in #3278
- fix(subagent): freshen explicit condensers per spawn by @ak684 in #3743
- fix(sdk): normalize empty assistant chat content by @bozhnyukAlex in #3766
- fix(acp): persist pre-session model switch instead of raising by @simonrosenberg in #3764
- [Prompt registry] Phase 3 — Cutover: route default path through the registry by @VascoSch92 in #3745
- fix(skills): mask Skill.mcp_tools credentials at rest by @simonrosenberg in #3774
- fix: expand per-conversation secrets in plugin source/ref before fetch by @jpshackelford in #3758
- [AgentProfile][sdk] AgentProfile kind-discriminated union by @simonrosenberg in #3757
- [AgentProfile][sdk] AgentProfileStore + FK lifecycle by @simonrosenberg in #3775
- fix(acp): require tokens key before selecting chatgpt auth method by @simonrosenberg in #3628
- Fix async ACP restart loopback secret lookup deadlock by @neubig in #3737
- fix: redact credentials from GitCommandError.command field by @simonrosenberg in #3689
- feat(agent-server): add deferred-init / dormant mode by @tofarr in #3287
- feat(acp): bump ACP provider CLIs (claude 0.44, codex 0.16, gemini 0.46) + configOptions model selection by @simonrosenberg in #3773
- [AgentProfile][sdk] resolve_agent_profile() by @simonrosenberg in #3780
- [AgentProfile][agent-server] active_agent_profile_id + /api/agent-profiles router + migration seed by @simonrosenberg in #3781
- [AgentProfile][agent-server] materialize endpoint (resolve dry-run) by @simonrosenberg in #3783
- feat(sdk): add /goal SDK core (judge-driven goal-completion loop) by @VascoSch92 in #3769
- [AgentProfile][agent-server] agent_profile_id at conversation start + LaunchedProfile provenance by @simonrosenberg in #3784
- fix(acp): surface the real cause behind opaque "Internal error" failures by @simonrosenberg in #3756
- feat: API design: launched agent profile provenance names by @enyst in #3788
- [codex] Fix ACP model selection methods by @neubig in #3688
- Redact git credentials at remaining URL log/serialization sites (fixes #3751) by @simonrosenberg in #3792
- feat(agent-server): add /goal agent-server endpoint, background loop, and stop/resume by @VascoSch92 in #3770
- Fix 16_deferred_init example: poll on real execution-status values by @VascoSch92 in #3793
- Release v1.29.0 by @all-hands-bot in #3787
New Contributors
- @bozhnyukAlex made their first contribution in #3766
Full Changelog: v1.28.1...v1.29.0