v1.18.0
What's Changed
- feat: Extensions module by @csmith49 in #2801
- fix: redact sensitive credentials from command logs by @simonrosenberg in #2815
- Release v1.17.0 by @all-hands-bot in #2812
- fix: override exclude-newer in version-bump-prs workflow by @xingyaoww in #2817
- fix: normalize Anthropic-style tool calls in the SDK agent path by @juanmichelini in #2685
- feat(observability): add init_laminar_for_external helper for webhook integrations by @juanmichelini in #2820
- test(agent-server): add regression test for tags forwarding on conversation create by @xingyaoww in #2822
- feat(agent-server): expose model switching (switch_profile) in agent-server REST API by @VascoSch92 in #2795
- feat(sdk): accept inline
system_promptkwarg on Agent by @xingyaoww in #2826 - Enforce test directory allowlist and fix orphaned tests by @xingyaoww in #2836
- chore(deps): bump pillow from 12.1.1 to 12.2.0 by @dependabot[bot] in #2832
- chore(deps): bump cryptography from 46.0.6 to 46.0.7 by @dependabot[bot] in #2833
- Integrate GraySwan security changes by @MadhaviSG in #2787
- chore(ci): bump poetry version to 2.3.3 in version-bump-prs workflow by @aivong-openhands in #2831
- fix: strip deployment prefixes from LiteLLM proxy model names by @jpshackelford in #2693
- fix(sdk): preserve security policy filename contract by @enyst in #2838
- chore(deps): bump dawidd6/action-download-artifact from 19 to 20 by @dependabot[bot] in #2764
- feat(pr-review): enable sub-agent delegation for file-level reviews by @xingyaoww in #2839
- chore(ci): use GITHUB_TOKEN for label and stale workflows by @simonrosenberg in #2844
- chore(deps-dev): bump pytest from 9.0.2 to 9.0.3 by @dependabot[bot] in #2834
- Add claude-opus-4-7 model support by @juanmichelini in #2852
- feat(terminal): standardize send_keys special key support across backends by @sjathin in #2807
- Persist ACP session id across agent-server restarts by @simonrosenberg in #2869
- feat(sdk/tools): add explicit invoke_skill tool for progressive-disclosure skills by @VascoSch92 in #2835
- reduce noise in laminar observability by @dinmukhamedm in #2871
- feat(sdk): split AgentSettings into LLM/ACP discriminated union by @simonrosenberg in #2861
- feat(acp): stream ACPToolCallEvents live from session_update by @simonrosenberg in #2868
- Make confirmation mode critical in conversation schema by @neubig in #2870
- chore(deps): bump lewagon/wait-on-check-action from 1.6.0 to 1.7.0 by @dependabot[bot] in #2842
- chore(deps): bump actions/github-script from 8 to 9 by @dependabot[bot] in #2843
- refactor(sdk): extract LLM response classification and dispatch from Agent.step() by @VascoSch92 in #2743
- feat: add title_llm_profile support for auto-titling by @simonrosenberg in #2515
- fix(acp): show the real model in logs and serialized state by @simonrosenberg in #2881
- feat: add Conversation.fork() as a first-class SDK primitive by @xingyaoww in #2841
- fix(sdk): reorder schema properties so security_risk precedes content fields by @VascoSch92 in #2745
- feat(workspace): make health_check_timeout configurable on DockerWorkspace and ApptainerWorkspace by @ixchio in #2688
- ci: use MAINTAINERS as reviewer assignment fallback by @enyst in #2875
- fix(ci): pass extensions-version so sub-agent review script is used by @xingyaoww in #2890
- Add kimi-k2.6 model to resolve_model_config.py by @juanmichelini in #2894
- fix(sdk/llm): Codex subscription mode: empty responses, rejected params, and reasoning item 404s by @VascoSch92 in #2798
- chore: use OPENHANDS_BOT_GITHUB_PAT_EVAL_DISPATCH for eval dispatch by @simonrosenberg in #2895
- chore: use OPENHANDS_BOT_GITHUB_PAT_PUBLIC in public-repo workflows by @simonrosenberg in #2898
- Change llm.base_url prominence from CRITICAL to MAJOR by @neubig in #2899
- fix(llm): pass stream_options to preserve cache token metrics in streaming mode by @xingyaoww in #2897
- test: use default agent preset for integration tests by @xingyaoww in #1996
New Contributors
- @MadhaviSG made their first contribution in #2787
Full Changelog: v1.17.0...v1.18.0