0.24.0
This release introduces a Usage & Monitoring dashboard, giving organization administrators visibility into AI spend and adoption across the organization. This dashboard provides high-level reports showing conversation counts, active sessions, and cost-per-conversation metrics, along with detailed conversation, user, and model-level breakdowns to help teams measure efficiency and ROI. The new Budgets feature — also enabled for organization admins — enables org-level spending limits with configurable alert thresholds (e.g., 80%, 90%, 100%) delivered via email or Slack. Default budgets and override budgets allow administrators to manage individual user spending limits. The Settings → Agent page enables the use of third-party agents — like Claude Code or Codex — on OpenHands Enterprise sandboxes through the ACP (Agent Canvas Protocol) framework. Several additional Jira Cloud and Data CEnter enhancements have been made to improve overall integration experience.Enterprise Server
Features
- feat: implement semantic file chunking using tree-sitter AST parsing by @ysinghc in https://github.com/OpenHands/OpenHands/pull/14699
- feat(org): Add organization conversation admin dashboard by @saurya in https://github.com/OpenHands/OpenHands/pull/14846
- feat(app-server): capture production workspace state — initial snapshot at start + archive before delete (APP-2403) by @simonrosenberg in https://github.com/OpenHands/OpenHands/pull/14953
- feat(device-verify): align warning, button color, and add workspace dropdown by @tofarr in https://github.com/OpenHands/OpenHands/pull/15031
- feat(enterprise/auth): add super roles via user.role_id with permission fallback by @chuckbutkus in https://github.com/OpenHands/OpenHands/pull/14937
- feat(org): expose caller permissions on GET /organizations//me by @VascoSch92 in https://github.com/OpenHands/OpenHands/pull/15048
- feat(api-keys): add optional active window (not_before & expires_at) by @tofarr in https://github.com/OpenHands/OpenHands/pull/15085
- feat(app-server): add repo/branch to Laminar trace metadata by @simonrosenberg in https://github.com/OpenHands/OpenHands/pull/15059
- feat: add parallel tool calls (tool_concurrency_limit) to agent settings by @VascoSch92 in https://github.com/OpenHands/OpenHands/pull/14929
- feat(api-keys): make ‘unbound’ org scope an explicit, first-class option by @tofarr in https://github.com/OpenHands/OpenHands/pull/15096
- feat(jira-dc): fix the integration panel so members get guidance, not the admin setup form by @ak684 in https://github.com/OpenHands/OpenHands/pull/15040
- feat: Add dynamic marketplace support for plugin registration by @HeyItsChloe in https://github.com/OpenHands/OpenHands/pull/14887
- feat(saas-auth): accept api_key cookie as a fallback credential by @tofarr in https://github.com/OpenHands/OpenHands/pull/15101
- feat(enterprise/auth): super-admin management endpoint (grant/revoke/list) by @jpshackelford in https://github.com/OpenHands/OpenHands/pull/15006
- feat: rename admin dashboard to usage & monitoring by @saurya in https://github.com/OpenHands/OpenHands/pull/15146
- feat: add SMTP email service by @saurya in https://github.com/OpenHands/OpenHands/pull/15144
- feat: track user login timestamps by @saurya in https://github.com/OpenHands/OpenHands/pull/15148
- feat: surface email enabled for smtp/resend by @saurya in https://github.com/OpenHands/OpenHands/pull/15185
- feat: pass repository metadata to observability traces by @neubig in https://github.com/OpenHands/OpenHands/pull/14431
- feat(enterprise): Agent Profiles on the cloud/SaaS backend (#15044) by @simonrosenberg in https://github.com/OpenHands/OpenHands/pull/15060
- feat(backend): Add Budgets dashboard and expand Usage Dashboard by @saurya in https://github.com/OpenHands/OpenHands/pull/15149
- feat: budgets and usage monitoring UI by @saurya in https://github.com/OpenHands/OpenHands/pull/15186
- feat: surface email enabled for smtp/resend by @saurya in https://github.com/OpenHands/OpenHands/pull/15214
- feat(app-server): enrich final archive manifests and remove initial snapshots by @simonrosenberg in https://github.com/OpenHands/OpenHands/pull/15058
- feat(enterprise): make BYOR key alias pattern configurable by @tofarr in https://github.com/OpenHands/OpenHands/pull/15232
Bug Fixes
- fix(jira): make Jira Cloud and Jira DC HTTP timeouts configurable and consistent by @ak684 in https://github.com/OpenHands/OpenHands/pull/15012
- fix: Fix CVE-2026-44681: Update authlib to >=1.6.12 by @mamoodi in https://github.com/OpenHands/OpenHands/pull/14983
- fix: don’t switch LLM profile before the conversation UUID exists (avoids 422) by @ak684 in https://github.com/OpenHands/OpenHands/pull/14900
- fix(enterprise): log automation HTTP response failures as errors by @wgu9 in https://github.com/OpenHands/OpenHands/pull/15004
- fix(enterprise): add alembic migration for execution_status column by @tofarr in https://github.com/OpenHands/OpenHands/pull/15030
- fix(jira-dc): more forgiving repo + mention resolution for Data Center by @ak684 in https://github.com/OpenHands/OpenHands/pull/15034
- fix(device-verify): rename ‘Workspace’ dropdown to ‘Organization’ by @tofarr in https://github.com/OpenHands/OpenHands/pull/15057
- fix(jira-dc): don’t org-gate a personal-workspace Jira DC integration by @ak684 in https://github.com/OpenHands/OpenHands/pull/15036
- fix: stream LLM tokens for cloud conversations and profile switches by @VascoSch92 in https://github.com/OpenHands/OpenHands/pull/15021
- fix: set email person property in PostHog during onboarding completion by @lilagrc in https://github.com/OpenHands/OpenHands/pull/15070
- fix: Timezones stored in the db do not have a timezone by @tofarr in https://github.com/OpenHands/OpenHands/pull/15092
- fix: add test for InMemoryRateLimiter.init to prevent duplicate assignment regression by @aivong-openhands in https://github.com/OpenHands/OpenHands/pull/14729
- fix(frontend): stop streamed deltas rendering twice and fragmenting in V1 chat by @shanemort1982 in https://github.com/OpenHands/OpenHands/pull/15108
- fix: crash when request.client is None in InMemoryRateLimiter by @rakshith1928 in https://github.com/OpenHands/OpenHands/pull/15119
- fix(sandbox-spec): fall back to defaults when runtime-api has no warm runtimes by @tofarr in https://github.com/OpenHands/OpenHands/pull/15141
- fix: settings page scroll layout by @saurya in https://github.com/OpenHands/OpenHands/pull/15147
- fix(app_server): pass flat mcp_config shape to SDK Agent by @tofarr in https://github.com/OpenHands/OpenHands/pull/15159
- fix: scroll settings sidebar so Skills is reachable in orgs by @hieptl in https://github.com/OpenHands/OpenHands/pull/15138
- fix(frontend): read SDK 1.31.x flat mcp_config wire format by @tofarr in https://github.com/OpenHands/OpenHands/pull/15165
- fix(app_server): derive agent server image from package version by @tofarr in https://github.com/OpenHands/OpenHands/pull/15168
- fix(app-server): pass index columns as a list in migration 013 by @VascoSch92 in https://github.com/OpenHands/OpenHands/pull/15176
- fix: default ENABLE_ACP on so ACP agent settings show in OH Cloud by @hieptl in https://github.com/OpenHands/OpenHands/pull/15183
- fix: send authenticated marketplace URLs to agent-server by @hieptl in https://github.com/OpenHands/OpenHands/pull/15187
- fix: prevent webhook-driven DB connection leaks by @tofarr in https://github.com/OpenHands/OpenHands/pull/15212
- fix(frontend): mention SMTP env vars for budget alerts by @saurya in https://github.com/OpenHands/OpenHands/pull/15218
- fix(enterprise): cascade-delete conversation_cost_events on conversation delete by @tofarr in https://github.com/OpenHands/OpenHands/pull/15220
- fix: Enable LIFO database connection pooling by @tofarr in https://github.com/OpenHands/OpenHands/pull/15225
- fix(app-server): preserve observability context metadata by @hxaxd in https://github.com/OpenHands/OpenHands/pull/15215
- fix(app-server): preserve conversation created_at across lifecycle webhooks by @Sujit-1509 in https://github.com/OpenHands/OpenHands/pull/15243
- fix(mcp): preserve SaaS credentials with encrypted storage by @simonrosenberg in https://github.com/OpenHands/OpenHands/pull/15257
- fix(frontend): restore cross-domain PostHog tracking by aligning client/server distinct_id (WIP) by @lilagrc in https://github.com/OpenHands/OpenHands/pull/15100
- fix(app-server): lower DB pool defaults and make them env-tunable by @dylan-openhands in https://github.com/OpenHands/OpenHands/pull/15270
- fix(mcp): preserve MCP auth secrets stripped by settings GET round-trip by @jlav in https://github.com/OpenHands/OpenHands/pull/15285
Maintenance
- build: pin dependency versions exactly by @rbren in https://github.com/OpenHands/OpenHands/pull/14384
- ci: add release ready gate by @enyst in https://github.com/OpenHands/OpenHands/pull/14987
- ci: PLTF-2960 open a chart image-tag bump PR on cloud release by @aivong-openhands in https://github.com/OpenHands/OpenHands/pull/15166
- ci: PLTF-2960 sync chart appVersion with cloud image tag by @aivong-openhands in https://github.com/OpenHands/OpenHands/pull/15219
- ci: wait for the docker build before retagging images by @jlav in https://github.com/OpenHands/OpenHands/pull/15213
- chore: Update README.md by @rbren in https://github.com/OpenHands/OpenHands/pull/15271
Software Agent SDK
Features
- feat(agent-server): expose repository metadata for workspace archives by @simonrosenberg in https://github.com/OpenHands/software-agent-sdk/pull/3932
- feat: commit-history API — list commits and per-commit diffs by @hieptl in https://github.com/OpenHands/software-agent-sdk/pull/4075
- feat(security): add ToolShieldLLMSecurityAnalyzer by @xli04 in https://github.com/OpenHands/software-agent-sdk/pull/2911
Bug Fixes
- fix(skills): match keyword triggers on whole words only by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/4008
- fix(sdk): reconnect remote conversation websocket by @bozhnyukAlex in https://github.com/OpenHands/software-agent-sdk/pull/3987
- fix(security): add a secret-disclosure consent rule to the agent security policy by @warmjademe in https://github.com/OpenHands/software-agent-sdk/pull/3823
- fix(sdk): keep legacy history on resume when the stored tail is a non-tree artifact by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/4068
- fix: support GPT-5.6 across Codex authentication by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4056
- fix: pick a display base ref that keeps committed work visible by @hieptl in https://github.com/OpenHands/software-agent-sdk/pull/4065
- fix(mcp): validate secrets after parsing by @simonrosenberg in https://github.com/OpenHands/software-agent-sdk/pull/4099
- fix(skills): make marketplaces additive to public skills by @rsd-darshan in https://github.com/OpenHands/software-agent-sdk/pull/4087
- fix(mcp): preserve nested object properties in LLM-facing tool schema by @ixchio in https://github.com/OpenHands/software-agent-sdk/pull/4011
- [codex] fix ACP prompt argument order by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/3996
Maintenance
- ci(version-bump-prs): make PR-creation steps independent by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/4051
- ci: add release security-scan by @smolpaws in https://github.com/OpenHands/software-agent-sdk/pull/4042
- chore(deps): bump MishaKav/pytest-coverage-comment from 1.7.2 to 1.10.0 by @dependabot[bot] in https://github.com/OpenHands/software-agent-sdk/pull/4046
- chore(deps): bump docker/setup-buildx-action from 4.0.0 to 4.2.0 by @dependabot[bot] in https://github.com/OpenHands/software-agent-sdk/pull/4045
Runtime API
Features
- feat(logging): emit exc_info and stack_info as JSON arrays by @tofarr in https://github.com/OpenHands/runtime-api/pull/635
- feat(cleanup): enrich final workspace archive manifests by @simonrosenberg in https://github.com/OpenHands/runtime-api/pull/630
Bug Fixes
- fix: prevent DetachedInstanceError on Runtime accessed after session close by @tofarr in https://github.com/OpenHands/runtime-api/pull/636
OpenHands Cloud (Helm Chart)
Features
- feat: upgrade embedded cluster to 2.19.2+k8s-1.34 by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/821
- feat: upgrade embedded cluster to 2.19.2+k8s-1.35 by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/822
- feat: upgrade embedded cluster to 2.19.2+k8s-1.36 by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/826
- feat(sysbox): default sandbox isolation on the embedded cluster by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/770
- feat: PLTF-3196 Configure global OpenHands resolver label by @aivong-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/807
- feat: PLTF-2960 sync metadata with image tag bumps by @aivong-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/828
- feat: Add replicated vendor portal links in release workflows by @dylan-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/833
- feat: PLTF-3198 enable the Replicated SDK by default for helm installs by @aivong-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/895
- feat(replicated): add OEM User Creation Flow advanced option by @jpshackelford in https://github.com/OpenHands/OpenHands-Cloud/pull/914
Bug Fixes
- fix(postgres): raise embedded postgres memory limit to avoid OOM by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/829
- fix: improve integrations-hub Datadog and probe configuration by @neubig in https://github.com/OpenHands/OpenHands-Cloud/pull/862
- fix(openhands): stop warm-runtimes job pods matching the runtime-api Service selector by @ak684 in https://github.com/OpenHands/OpenHands-Cloud/pull/867
- fix(openhands): mirror agentServerEnv into warm-runtime env so warm pools stay claimable by @ak684 in https://github.com/OpenHands/OpenHands-Cloud/pull/866
- fix: set default agent-server tag back to 1.36.0-python by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/908
Maintenance
- ci: PLTF-2920 dispatch staging chart bumps after publish by @aivong-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/801
- refactor(openhands): rename gitlab webhook install cronjob by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/865
- ci: PLTF-3193 dispatch development chart bumps after publish by @aivong-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/843
- test: PLTF-1257 helm-unittest setup by @aivong-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/894
- chore: add CODEOWNERS by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/878

