OpenHands Enterprise 0.55.0
Released August 26, 2026.Highlights
- Daily Conversation Quotas — Enterprise Server now includes read-only usage pages with reset countdown, org-level exemptions, and self-service quota increase requests
- Dedicated Sandbox Node Scheduling — Enterprise installs can configure app and sandbox node roles with affinity across all pod specs and preflight validation
- Expanded Issue Tracker Support — Org-scoped Jira Cloud resolver with email-match mode and Azure DevOps webhook configuration
- Agent SDK Enhancements — Agent Plugins manifest loader, structured output, pre-flight LLM validation, and read-at-use provider connections
- Runtime Activity-Based Anchoring — Runtime reaping, database pruning, and idle-grace periods now anchor on last activity instead of creation time
- Identity & Billing Improvements — Hardened Keycloak identity matching using subject instead of email, plus extensive billing and credit-handling fixes
Features
Enterprise Server
- feat(settings): increase LLM profile limit to 50 and make it configurable by @jpelletier1 in https://github.com/OpenHands/enterprise/pull/114
- feat: add cloud workspace file-listing endpoint (OHE-3053) by @lilagrc in https://github.com/OpenHands/enterprise/pull/135
- feat: Expose organization creation teaser UX by @malhotra5 in https://github.com/OpenHands/enterprise/pull/151
- feat: set SaaS default model to Kimi K3 and migrate GLM 5.2 settings by @juanmichelini in https://github.com/OpenHands/enterprise/pull/190
- feat: org-scope the Jira Cloud resolver and add email-match mode for OHE by @hieptl in https://github.com/OpenHands/enterprise/pull/192
- feat(frontend): add data-testid to changes refresh button by @tofarr in https://github.com/OpenHands/enterprise/pull/203
- feat: add daily conversation quota schema foundation by @neubig in https://github.com/OpenHands/enterprise/pull/180
- feat: add read-only quota usage page with reset countdown by @neubig in https://github.com/OpenHands/enterprise/pull/199
- feat: add work-email quota increase requests with self-service verification by @neubig in https://github.com/OpenHands/enterprise/pull/200
- feat: add org-level daily conversation quota exemptions by @neubig in https://github.com/OpenHands/enterprise/pull/212
- feat: accept Jira Cloud picker mentions of the service account by @ak684 in https://github.com/OpenHands/enterprise/pull/223
- feat(settings): auto-rotate invalid managed LLM keys on settings writes by @tofarr in https://github.com/OpenHands/enterprise/pull/231
- feat: migrate Kimi K3 settings to DeepSeek V4 Flash by @neubig in https://github.com/OpenHands/enterprise/pull/253
Software Agent SDK
- Feat: structured output by @luciobaiocchi in https://github.com/OpenHands/software-agent-sdk/pull/4207
- agent-server: make conversation worktree root configurable by @xmrflipflop in https://github.com/OpenHands/software-agent-sdk/pull/4362
- feat(observability): emit LLM and TOOL spans for ACP turns by @simonrosenberg in https://github.com/OpenHands/software-agent-sdk/pull/4376
- feat: derive automation conversation tags in base RemoteWorkspace by @hieptl in https://github.com/OpenHands/software-agent-sdk/pull/4414
- feat: emit canonical conversation telemetry from agent server by @malhotra5 in https://github.com/OpenHands/software-agent-sdk/pull/4459
- feat(hooks): implement prompt-based evaluation by @onatozmenn in https://github.com/OpenHands/software-agent-sdk/pull/4160
- feat(security): AST-backed shell command-name resolution (#2721 Phase 2b) by @eeee2345 in https://github.com/OpenHands/software-agent-sdk/pull/3944
- feat: add public from_persisted() entry point to AgentSettingsBase by @mvanhorn in https://github.com/OpenHands/software-agent-sdk/pull/3503
- feat(sdk): add cleanup LLM profile for outward agent text by @smolpaws in https://github.com/OpenHands/software-agent-sdk/pull/4344
- feat(llm): resolve provider-specific runtime metadata for routed models by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4423
- feat: add pre-flight LLM validation endpoint (POST /api/profiles//validate) by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4422
- feat: carry ConversationErrorEvent on ConversationRunError for automation callbacks by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4458
- feat(plugin): add Agent Plugins manifest loader (root plugin.json, closed schema) by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/4474
- feat(file-router): add POST /file/create_directory by @georgeglarson in https://github.com/OpenHands/software-agent-sdk/pull/4482
- Add read-at-use LLM provider connections by @juanmichelini in https://github.com/OpenHands/software-agent-sdk/pull/4492
- feat: Add deployment kind to agent-server telemetry by @malhotra5 in https://github.com/OpenHands/software-agent-sdk/pull/4522
- feat(telemetry): identify automation conversations by @malhotra5 in https://github.com/OpenHands/software-agent-sdk/pull/4529
- feat(tools): add structured task outcome preset by @malhotra5 in https://github.com/OpenHands/software-agent-sdk/pull/4479
- feat(prompt): mention local conversation history by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4527
Automation
- feat(automation): tag local automation conversations by @neubig in https://github.com/OpenHands/automation/pull/319
- feat: sync automations to a git repository by @VascoSch92 in https://github.com/OpenHands/automation/pull/327
- feat: accept catalog bundle automations on the raw create path by @VascoSch92 in https://github.com/OpenHands/automation/pull/346
OpenHands Cloud (Helm Chart)
- feat: e2e: restructure for Keycloak admin + dual GitHub user flows by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1089
- feat: add configurable daily conversation limit to chart by @neubig in https://github.com/OpenHands/OpenHands-Cloud/pull/1100
- feat: wire Jira Cloud email-match integration for Replicated installs by @ak684 in https://github.com/OpenHands/OpenHands-Cloud/pull/1113
- feat: add org-management e2e suite with super-admin REST provisioning by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1122
- feat(replicated): declare app and sandbox node roles by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/1133
- feat(chart): add affinity plumbing to all pod specs by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/1134
- feat(replicated): gate dedicated sandbox nodes behind a config option by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/1135
- feat(preflight): warn when dedicated sandbox nodes are enabled with no sandbox node by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/1136
- feat(replicated): PLTF-3461 configure duplicate email checks by @aivong-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/1139
- feat(azure-devops): wire the resolver webhook secret into the chart and KOTS config by @ak684 in https://github.com/OpenHands/OpenHands-Cloud/pull/1160
Bug Fixes
Enterprise Server
- fix: resolve LLM profile keys in /users/me expose-secrets response by @hieptl in https://github.com/OpenHands/enterprise/pull/168
- fix: handle null identity_provider for direct Keycloak logins by @tofarr in https://github.com/OpenHands/enterprise/pull/169
- fix: URL-encode Redis password in authed URL for coredis/limits by @tofarr in https://github.com/OpenHands/enterprise/pull/177
- fix: close dropdown menu after selection when wrapped in a label by @hieptl in https://github.com/OpenHands/enterprise/pull/176
- fix: stop redacting the Jira DC base URL in agent output by @hieptl in https://github.com/OpenHands/enterprise/pull/182
- fix: inject Bitbucket DC server URL, repo URL, and token context into agent prompt by @hieptl in https://github.com/OpenHands/enterprise/pull/183
- fix(auth): make Keycloak HTTP retries configurable by @neubig in https://github.com/OpenHands/enterprise/pull/186
- fix: OHE-3100 : use sandbox_spec.working_dir instead of hardcoded /workspace by @tofarr in https://github.com/OpenHands/enterprise/pull/188
- fix(auth): make LiteLLM management timeout configurable by @neubig in https://github.com/OpenHands/enterprise/pull/189
- fix: handle null runtime context values by @ak684 in https://github.com/OpenHands/enterprise/pull/112
- fix: use agent server as conversation creation source by @malhotra5 in https://github.com/OpenHands/enterprise/pull/156
- fix: let managed LLM profiles take the org’s current key on rotation by @dylan-openhands in https://github.com/OpenHands/enterprise/pull/178
- fix(budgets): persist maintenance updates by @saurya in https://github.com/OpenHands/enterprise/pull/204
- fix: let free-tier (no-credit) teams run $0-cost models by @juanmichelini in https://github.com/OpenHands/enterprise/pull/143
- fix: protect personal organization billing credits by @saurya in https://github.com/OpenHands/enterprise/pull/167
- fix(budgets): prevent per-user allowance renewal on sync by @saurya in https://github.com/OpenHands/enterprise/pull/205
- fix: display usage monitoring timestamps in local time by @saurya in https://github.com/OpenHands/enterprise/pull/208
- fix: use verified repo provider in Jira Cloud conversation start request by @ak684 in https://github.com/OpenHands/enterprise/pull/216
- fix(billing): show personal-workspace credits without a member budget row by @aivong-openhands in https://github.com/OpenHands/enterprise/pull/218
- fix: clarify Jira email-visibility guidance with exact setting and delay by @ak684 in https://github.com/OpenHands/enterprise/pull/222
- fix(enterprise): match provisioned user on Keycloak sub, not email by @tofarr in https://github.com/OpenHands/enterprise/pull/224
- fix(enterprise): match on Keycloak sub in TOCTOU idempotent recovery too by @tofarr in https://github.com/OpenHands/enterprise/pull/225
- fix(enterprise): await session.merge in billing success callback by @tofarr in https://github.com/OpenHands/enterprise/pull/226
- fix: OHE-3127 : return null credits instead of 503 when budget is None by @tofarr in https://github.com/OpenHands/enterprise/pull/228
- fix: return 0 credits instead of None for users without a budget by @tofarr in https://github.com/OpenHands/enterprise/pull/238
- fix(settings): stop a member’s settings save writing to the whole org by @jlav in https://github.com/OpenHands/enterprise/pull/254
Software Agent SDK
- fix(mcp): close reconciliation gaps left by #4367 by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/4369
- fix(acp): recover credential monitor after transient errors by @simonrosenberg in https://github.com/OpenHands/software-agent-sdk/pull/4403
- fix(sdk): make ACP auth failures self-diagnosing by @simonrosenberg in https://github.com/OpenHands/software-agent-sdk/pull/4404
- fix(observability): record non-executed tool results by @simonrosenberg in https://github.com/OpenHands/software-agent-sdk/pull/4415
- fix(agent-server): compose ConversationInfo off the event loop to avoid GC wedge by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4417
- fix(agent-server): initialize observability after deferred env by @Shimada666 in https://github.com/OpenHands/software-agent-sdk/pull/4426
- fix(settings): inherit condenser max_tokens from LLM effective_max_input_tokens by @vnktadithya in https://github.com/OpenHands/software-agent-sdk/pull/4435
- fix(goal): don’t halt the goal loop on a STUCK run by @all-hands-bot in https://github.com/OpenHands/software-agent-sdk/pull/4381
- fix(llm): stop serializing calls through global config by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4473
- fix(security-scan): improve release security scan comment by @all-hands-bot in https://github.com/OpenHands/software-agent-sdk/pull/4397
- fix(profiles): repair v1 skills migration by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4320
- fix(agent-server): base_state.json as single source of truth for the agent (end meta.json duplication) by @enyst in https://github.com/OpenHands/software-agent-sdk/pull/4440
- fix(sdk): cap condenser token limit by agent context by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4461
- fix(agent-server): move bash event search off event loop and replace glob with scandir by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4481
- fix: redact API key from validate_profile error responses and logs by @all-hands-bot in https://github.com/OpenHands/software-agent-sdk/pull/4506
- fix: make dict-entry secret redaction case-insensitive by @chintan-diwakar in https://github.com/OpenHands/software-agent-sdk/pull/4508
- fix(agent-server): propagate out-of-band run failures as ConversationErrorEvent (#16686) by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/4535
- fix(sdk): normalize Kimi K3 vision metadata by @malhotra5 in https://github.com/OpenHands/software-agent-sdk/pull/4567
- fix(agent): keep terminal prefix aliases from doubling an existing executable by @onatozmenn in https://github.com/OpenHands/software-agent-sdk/pull/4471
- fix(sdk): resolve workspace default from active LLM profile by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4497
Runtime API
- fix: anchor runtime reaping and DB pruning on last activity, not creation time by @hieptl in https://github.com/OpenHands/runtime-api/pull/707
- fix: anchor the idle-grace period on last_state_change, not created_at by @hieptl in https://github.com/OpenHands/runtime-api/pull/713
- fix: OHE-3100 : root-owned working_dir subdirs on PVC via init container by @tofarr in https://github.com/OpenHands/runtime-api/pull/714
- fix: reorder cleanup phases and resume expired deployment list tokens by @dylan-openhands in https://github.com/OpenHands/runtime-api/pull/712
Automation
- fix: stop marking successful automation runs as FAILED by @hieptl in https://github.com/OpenHands/automation/pull/331
OpenHands Cloud (Helm Chart)
- fix: Bound Laminar ClickHouse diagnostic log retention by @juanmichelini in https://github.com/OpenHands/OpenHands-Cloud/pull/1031
- fix: wire installer SMTP config into Keycloak realm email by @hieptl in https://github.com/OpenHands/OpenHands-Cloud/pull/1090
- fix(e2e): handle onboarding-form and 2FA auto-navigate race conditions by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1091
- fix(e2e): enable role during static discovery by @saurya in https://github.com/OpenHands/OpenHands-Cloud/pull/1099
- fix(e2e): replace networkidle waits and fix Promise.race short-circuit by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1108
- fix(automation): keep events service available during node drains by @aivong-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/1112
- fix: refresh changes panel when empty in VSCode integration test by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1114
- fix(e2e): order API keys spec after billing so new-user has credits by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1118
- fix(e2e): PLTF-3461 honor AUTH_BASE_URL for Keycloak admin URL by @aivong-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/1126
- fix(chart): set the warm pool working dir to /workspace/project by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/1140
- fix(deploy): tolerate a restarting kotsadm in replicated_deploy.sh by @dylan-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/1141
- fix(e2e): PLTF-3461 move the credit-gated API key check into the billing suite by @aivong-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/1143
- fix(ci): PLTF-3461 call the E2E trigger from each release workflow by @aivong-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/1144
Maintenance
Enterprise Server
- chore: remove dead localStorage feature-flag mechanism by @tofarr in https://github.com/OpenHands/enterprise/pull/230
- docs: Replace with Polyform License by @jpelletier1 in https://github.com/OpenHands/enterprise/pull/240
Software Agent SDK
- chore: drop the OpenHands/OpenHands bump-PR target from version-bump-prs.yml by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/4400
- refactor(plugin): extract PluginFormat strategy (prep for Agent Plugins support) by @jpshackelford in https://github.com/OpenHands/software-agent-sdk/pull/4420
- chore(ci): collapse the auto-posted Agent Server images PR section by @smolpaws in https://github.com/OpenHands/software-agent-sdk/pull/4442
- Add ready-for-dev issue and PR gates by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4464
- test(terminal): stabilize Windows Ctrl-C cleanup assertion by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4290
- perf(agent-server): cache unchanged conversation summaries by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4483
- ci: re-run PR description check when new commits are pushed by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/4486
- Weekly test sweep: remove low-value tests + simplify by @enyst in https://github.com/OpenHands/software-agent-sdk/pull/4484
- test(sdk): pin events_to_messages boundaries + fix responses_reasoning_item batch drop by @georgeglarson in https://github.com/OpenHands/software-agent-sdk/pull/4526
- test(sdk): pin send_message skill-activation wiring by @georgeglarson in https://github.com/OpenHands/software-agent-sdk/pull/4536
Automation
- chore: add success logging for tarball storage writes and deletes by @jpshackelford in https://github.com/OpenHands/automation/pull/335
- chore: remove QA changes workflow by @neubig in https://github.com/OpenHands/automation/pull/340
OpenHands Cloud (Helm Chart)
- test(e2e): add Playwright release harness by @saurya in https://github.com/OpenHands/OpenHands-Cloud/pull/1048
- test(e2e): cover organization-scoped member API keys by @saurya in https://github.com/OpenHands/OpenHands-Cloud/pull/1049
- test(e2e): add optional ReportPortal reporting by @saurya in https://github.com/OpenHands/OpenHands-Cloud/pull/1088
- test(e2e): make returning/new-user roles opt-in via *_GITHUB_USERNAME by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1092
- test(e2e): migrate Stripe credit purchase into billing suite by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1094
- test(e2e): migrate home avatar and user-menu tests by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1095
- test(e2e): remove example.spec.ts by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1096
- test(e2e): migrate API key creation and API access test by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1097
- test(e2e): migrate legacy conversation control tests by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1101
- ci: auto-deploy Replicated releases to internal instances by @dylan-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/1123
- ci: PLTF-3461 run E2E after Replicated deploys by @aivong-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/1129
- ci: name the Replicated release workflows consistently for README badges by @dylan-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/1131
- ci: fix unparseable expression in deploy-replicated, lint workflows in CI by @dylan-openhands in https://github.com/OpenHands/OpenHands-Cloud/pull/1132

