v1.15.0
- Stronger API stability and upgrade safeguards, with clearer deprecation expectations and better protection against breaking changes.
- Expanded RemoteRuntime capabilities and reliability, including improved ACP-based workflows and more dependable remote state handling.
- New developer-facing SDK features, such as parallel tool execution, additional public APIs, richer plugin metadata, and better workspace credential inheritance.
- Broader model compatibility and better reasoning-model support, including newly verified models and fixes for provider-specific behavior.
- Faster, more reliable builds and CI, plus a range of bug fixes and dependency updates that improve day-to-day stability.
What's Changed
- Enable ACPAgent on RemoteRuntime API by @simonrosenberg in #2190
- Make API breakage workflows fail loudly by @enyst in #2432
- Clarify REST contract deprecation policy by @enyst in #2433
- Highlight API breakage check comments more clearly by @enyst in #2434
- Enforce REST deprecation deadlines by @enyst in #2435
- Remove stale Python API workflow env by @enyst in #2442
- Run API breakage checks on push to main by @enyst in #2443
- Add rich package version 14.3.3 to dependency constraints by @yitao-li in #2414
- Export TokenUsage, page_iterator, and AsyncRemoteWorkspace as public SDK APIs by @enyst in #2445
- Fix apptainer workspace cleanup: kill zombie child processes. by @adityasoni9998 in #2450
- chore(deps): bump pyjwt from 2.11.0 to 2.12.0 by @dependabot[bot] in #2448
- Add docstring guidelines and fix key docstrings for MDX compatibility by @rbren in #2452
- ci: guard package version bumps outside release PRs by @enyst in #2457
- Fix: Add tags to root endpoint for OpenAPI spec by @rbren in #2458
- Fix Python selection in version-bump PR workflow by @neubig in #2430
- Revert PR #2190: Enable ACPAgent on RemoteRuntime API by @enyst in #2451
- test(sdk): reproduce delegate resume compatibility regression by @neubig in #2382
- Enforce REST API deprecation runway in breakage checks by @enyst in #2464
- Use version tag for agent server image in version bump prs by @aivong-openhands in #2427
- Enable ACPAgent on RemoteRuntime API via ACP conversation endpoints by @simonrosenberg in #2465
- Refine temperature/top_p handling for reasoning models by @mayeco in #2277
- chore(deps): bump authlib from 1.6.7 to 1.6.9 by @dependabot[bot] in #2475
- feat(prompt): add AI disclosure policy for external service communications by @xingyaoww in #2476
- feat(build): add OPENHANDS_BUILDKIT_CACHE_MODE env var to control cache export by @simonrosenberg in #2479
- fix: preflight check now validates reasoning_content for thinking models by @juanmichelini in #2420
- Migrate PR review plugin to extensions repository by @juanmichelini in #2324
- Remove multiswebench from CI eval workflow options by @juanmichelini in #2483
- chore(deps): bump pyasn1 from 0.6.2 to 0.6.3 by @dependabot[bot] in #2484
- Add GPT-5.4 to verified models by @juanmichelini in #2487
- fix: synchronize ACP telemetry and refresh remote final state by @simonrosenberg in #2460
- refactor(sdk/subagent): showing tools each subagent has by @VascoSch92 in #2480
- feat: workspace.get_llm() and get_secrets() for OpenHandsCloudWorkspace credential inheritance by @xingyaoww in #2409
- fix: cherry-pick cache_export_seconds telemetry fix to main by @simonrosenberg in #2493
- Add MiniMax-M2.7 to resolve_model_config.py by @juanmichelini in #2500
- chore(deps): bump pypdf from 6.8.0 to 6.9.1 by @dependabot[bot] in #2497
- fix(workflow): remove unused DATASET/SPLIT env vars from run-eval workflow by @VascoSch92 in #2504
- fix(ci): ignore Field deprecated metadata in API breakage check by @enyst in #2508
- chore: add Dependabot configuration for GitHub Actions updates by @aivong-openhands in #2501
- chore(deps): bump docker/login-action from 3 to 4 by @dependabot[bot] in #2520
- chore(deps): bump actions/download-artifact from 6 to 8 by @dependabot[bot] in #2517
- chore(deps): bump actions/setup-node from 4 to 6 by @dependabot[bot] in #2519
- chore(deps): bump actions/github-script from 7 to 8 by @dependabot[bot] in #2521
- chore(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #2518
- fix(examples): make the LLM profile store example directory-based by @enyst in #2507
- refactor(llm): use litellm params for reasoning support by @enyst in #1990
- Expose terminalbench in run-eval workflow by @neubig in #2360
- fix(tools): return browser timeout as observation by @neubig in #2455
- Add Google Gemini 3.1 verify models by @mayeco in #2276
- feat(workflow): Expected instance_ids format (no spaces) by @VascoSch92 in #2502
- feat(sdk/agent): Parallel Tool Call Execution by @VascoSch92 in #2390
- fix(ci): ignore added Field metadata in SDK API breakage check by @enyst in #2524
- fix(workflow): Normalize instance_ids by stripping spaces instead of failing by @simonrosenberg in #2529
- feat(websocket): add after_timestamp filter for bi-directional event loading by @jpshackelford in #1880
- build: move SDK SHA args after expensive layers for cache reuse by @simonrosenberg in #2522
- Fix Qwen3.5-Flash low submission rate: improve JSON arg parsing and add corrective feedback by @juanmichelini in #2512
- feat(docker): make ACP npm package installation optional via build arg by @simonrosenberg in #2535
- feat(docker): make boto3 installation optional via build arg by @simonrosenberg in #2536
- feat(docker): add extra_build_args to BuildOptions by @simonrosenberg in #2541
- feat(plugin): Add entry_command field to PluginManifest by @jpshackelford in #2230
- Add
urlfield to PluginAuthor to match Claude Code schema by @jpshackelford in #2546 - feat(sdk): Add browser tool usage guidelines to system prompt by @VascoSch92 in #2547
- fix: use asyncio.Event() for thread-safe initialization state by @ixchio in #2383
- fix(sdk): stop sending reasoning_effort to Kimi thinking by @enyst in #2549
- fix: add diagnostics for preflight proxy failures by @simonrosenberg in #2557
- Fix run-eval to use locked LiteLLM dependency by @simonrosenberg in #2559
- fix(sdk): pin LiteLLM version exactly by @rbren in #2558
- fix(ci): rename PAT secret to PAT_TOKEN by @simonrosenberg in #2561
- fix(ci): use /v1/models for proxy health check instead of /health by @simonrosenberg in #2563
- feat: support pre-built base images for faster rebuilds by @simonrosenberg in #2542
New Contributors
Full Changelog: v1.14.0...v1.15.0