> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openhands.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Release Notes

> Release notes for OpenHands Enterprise

## 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](https://github.com/OpenHands/OpenHands/pull/14699)
* feat(org): Add organization conversation admin dashboard by @saurya in [https://github.com/OpenHands/OpenHands/pull/14846](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](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](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](https://github.com/OpenHands/OpenHands/pull/14937)
* feat(org): expose caller permissions on GET /organizations/{id}/me by @VascoSch92 in [https://github.com/OpenHands/OpenHands/pull/15048](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](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](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](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](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](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](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](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](https://github.com/OpenHands/OpenHands/pull/15006)
* feat: rename admin dashboard to usage & monitoring by @saurya in [https://github.com/OpenHands/OpenHands/pull/15146](https://github.com/OpenHands/OpenHands/pull/15146)
* feat: add SMTP email service by @saurya in [https://github.com/OpenHands/OpenHands/pull/15144](https://github.com/OpenHands/OpenHands/pull/15144)
* feat: track user login timestamps by @saurya in [https://github.com/OpenHands/OpenHands/pull/15148](https://github.com/OpenHands/OpenHands/pull/15148)
* feat: surface email enabled for smtp/resend by @saurya in [https://github.com/OpenHands/OpenHands/pull/15185](https://github.com/OpenHands/OpenHands/pull/15185)
* feat: pass repository metadata to observability traces by @neubig in [https://github.com/OpenHands/OpenHands/pull/14431](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](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](https://github.com/OpenHands/OpenHands/pull/15149)
* feat: budgets and usage monitoring UI by @saurya in [https://github.com/OpenHands/OpenHands/pull/15186](https://github.com/OpenHands/OpenHands/pull/15186)
* feat: surface email enabled for smtp/resend by @saurya in [https://github.com/OpenHands/OpenHands/pull/15214](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](https://github.com/OpenHands/OpenHands/pull/15141)
* fix: settings page scroll layout by @saurya in [https://github.com/OpenHands/OpenHands/pull/15147](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](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](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](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](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](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](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](https://github.com/OpenHands/OpenHands/pull/15187)
* fix: prevent webhook-driven DB connection leaks by @tofarr in [https://github.com/OpenHands/OpenHands/pull/15212](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](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](https://github.com/OpenHands/OpenHands/pull/15220)
* fix: Enable LIFO database connection pooling by @tofarr in [https://github.com/OpenHands/OpenHands/pull/15225](https://github.com/OpenHands/OpenHands/pull/15225)
* fix(app-server): preserve observability context metadata by @hxaxd in [https://github.com/OpenHands/OpenHands/pull/15215](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](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](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](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](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](https://github.com/OpenHands/OpenHands/pull/15285)

#### Maintenance

* build: pin dependency versions exactly by @rbren in [https://github.com/OpenHands/OpenHands/pull/14384](https://github.com/OpenHands/OpenHands/pull/14384)
* ci: add release ready gate by @enyst in [https://github.com/OpenHands/OpenHands/pull/14987](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](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](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](https://github.com/OpenHands/OpenHands/pull/15213)
* chore: Update README.md by @rbren in [https://github.com/OpenHands/OpenHands/pull/15271](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](https://github.com/OpenHands/OpenHands-Cloud/pull/894)
* chore: add CODEOWNERS by @jlav in [https://github.com/OpenHands/OpenHands-Cloud/pull/878](https://github.com/OpenHands/OpenHands-Cloud/pull/878)
