OpenHands Enterprise 0.105.0
Released November 12, 2026.Highlights
- License management — Super Admins can enter a license key on the new Super Admin > License page or during first-time install wizard. License Enforcement ships “off” in this release. Existing OpenHands Enterprise customers will receive their license key in coming weeks to ensure continued operation with no change in limits of functionality.
- Super Admin feature switches — The Super Admin dashboard is now on by default. Agent Profiles and Organization MCP Servers (both beta) can be turned on from Super Admin > Instance Settings without a restart.
- Agent profiles for every automation — Any automation can now run with a chosen agent profile, including preset and plugin automations.
- Better MCP server settings — Users can name and rename remote MCP servers and turn each server on or off. The MCP Library now offers the organization scope for stdio servers.
- Optional LiteLLM gateway for Docker Compose — Compose installs can add a LiteLLM gateway for per-user and per-organization budgets.
Upgrade Notes
- Super Admin dashboard turns on — Replicated installs that never set Enable Super Admin Dashboard get it turned on when they upgrade. The first-install wizard does not start on existing installs. Installs that turned the option off keep it off.
- License preflight warning — Installs without a license now get a preflight warning, and automatic updates wait until a license is set. A headless
openhands installwithout a license needs--ignore-app-preflights. Deploying from the Admin Console still works. - Helm installs: new Enterprise defaults — Helm now hides personal LLM-key editing and the Billing page, and turns off email changes. Local Automations is on by default. It needs a durable PostgreSQL database, an
s3orgcspackage store, andautomation.upgradeAcknowledged: trueon upgrade. The Replicated SDK is now off by default for chart installs from ghcr; the VM installer keeps it on. - New bundled MinIO bucket — Installs that use the bundled MinIO get one extra empty bucket,
runtime-api-workspaces, for the opt-in FUSE workspace storage. - VS Code in sandboxes now uses code-server — Coder code-server replaces OpenVSCode Server for the in-sandbox editor.
Features
Enterprise Server
- feat(licensing): load an offline license file by @jlav in https://github.com/OpenHands/enterprise/pull/1213
- feat(licensing): read the license type and end date by @jlav in https://github.com/OpenHands/enterprise/pull/1241
- feat(licensing): report the number of automations in the usage report by @hieptl in https://github.com/OpenHands/enterprise/pull/1261
- feat(settings): offer “No profile restriction” on org agent profile secrets (OHE-3935) by @hieptl in https://github.com/OpenHands/enterprise/pull/1258
- feat(compose): add optional LiteLLM gateway and setup guide by @rajshah4 in https://github.com/OpenHands/enterprise/pull/1256
- feat(licensing): report license usage and add the unlicensed tier by @jlav in https://github.com/OpenHands/enterprise/pull/1283
- feat(licensing): stop adding users beyond the licensed user limit by @jlav in https://github.com/OpenHands/enterprise/pull/1279
- feat(licensing): stop creating orgs beyond the licensed org limit by @jlav in https://github.com/OpenHands/enterprise/pull/1280
- feat(licensing): allow SSO setup only when the license includes SSO by @jlav in https://github.com/OpenHands/enterprise/pull/1281
- feat(licensing): check a configured license when enforcement is off (OHE-3911) by @hieptl in https://github.com/OpenHands/enterprise/pull/1308
- feat(licensing): let Super Admins enter the license in the dashboard and the install wizard (OHE-3948) by @hieptl in https://github.com/OpenHands/enterprise/pull/1307
- feat(licensing): link Customer Center on the license page and wizard by @jlav in https://github.com/OpenHands/enterprise/pull/1316
- feat(super-admin): add Agent Profiles and Organization MCP Servers switches (OHE-4152) by @hieptl in https://github.com/OpenHands/enterprise/pull/1355
- feat(app-server): enable ACP effort on SDK 1.62.0 by @simonrosenberg in https://github.com/OpenHands/enterprise/pull/1270
Software Agent SDK
- Replace OpenVSCode Server with Coder code-server by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/6307
- feat(hooks): expose per-plugin PLUGIN_ROOT to plugin hook commands by @hieptl in https://github.com/OpenHands/software-agent-sdk/pull/6542
- feat(sdk): support effort level for Claude ACP models by @RobLoach in https://github.com/OpenHands/software-agent-sdk/pull/6107
- feat(secrets): optional scope and scope_description, grouped in the system prompt [dup of #5672] by @juanmichelini in https://github.com/OpenHands/software-agent-sdk/pull/6276
- feat(agent-server): read a pull request’s state and CI result by @enyst in https://github.com/OpenHands/software-agent-sdk/pull/6704
- feat(sdk): make ACP reasoning effort a first-class acp_effort setting by @simonrosenberg in https://github.com/OpenHands/software-agent-sdk/pull/6556
Runtime API
- feat: PLTF-3970 support external DNS servers for runtime pods by @jlav in https://github.com/OpenHands/runtime-api/pull/782
Automation
- feat(plugin-spec): add GET /plugin-spec/preflight endpoint by @juanmichelini in https://github.com/OpenHands/automation/pull/639
- feat: let users choose an automation’s agent profile by @simonrosenberg in https://github.com/OpenHands/automation/pull/615
- feat(events): parse GitHub workflow_run events by @hieptl in https://github.com/OpenHands/automation/pull/721
OpenHands Cloud (Helm Chart)
- feat(openhands): accept a license key or offline license file by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/1555
- feat(chart): default replicated sdk off, split out troubleshoot flags by @jlav in https://github.com/OpenHands/OpenHands-Cloud/pull/1556
- feat(chart): add opt-in fuse workspace settings, warm pool and Replicated switch by @tofarr in https://github.com/OpenHands/OpenHands-Cloud/pull/1565
- feat(replicated): show the Agent Profiles and Organization MCP Servers toggles again, off by default (OHE-4125) by @lilagrc in https://github.com/OpenHands/OpenHands-Cloud/pull/1570
- feat(replicated): turn on the Super Admin dashboard by default (OHE-4125) by @lilagrc in https://github.com/OpenHands/OpenHands-Cloud/pull/1569
- feat(github-app): subscribe to workflow_run webhook events by @hieptl in https://github.com/OpenHands/OpenHands-Cloud/pull/1553
- feat: give Helm installs Enterprise policy defaults by @rajshah4 in https://github.com/OpenHands/OpenHands-Cloud/pull/1507
- feat: enable guarded Enterprise Automations in Helm by @rajshah4 in https://github.com/OpenHands/OpenHands-Cloud/pull/1509
Bug Fixes
Enterprise Server
- fix(sandbox): never group a new conversation into a running sandbox that hosts none (OHE-3908) by @hieptl in https://github.com/OpenHands/enterprise/pull/1188
- fix: Always keep OPENHANDS_API_KEY in scoped agent profile launch secrets (OHE-3921) by @tofarr in https://github.com/OpenHands/enterprise/pull/1210
- fix(agent-profiles): skip profile resolution at launch when Agent Profiles are off (OHE-3934) by @hieptl in https://github.com/OpenHands/enterprise/pull/1260
- fix(integrations): use deployment-neutral progress-link text in job acknowledgments (OHE-3892) by @hieptl in https://github.com/OpenHands/enterprise/pull/1259
- fix: save conversation costs before automation cleanup by @rajshah4 in https://github.com/OpenHands/enterprise/pull/1235
- fix(github): explain sandbox usage limit failures by @ak684 in https://github.com/OpenHands/enterprise/pull/952
- fix(settings): let users name and rename remote MCP servers (OHE-3937) by @hieptl in https://github.com/OpenHands/enterprise/pull/1289
- fix(rate-limit): use redis-py for the limits backend and drop coredis by @dylan-openhands in https://github.com/OpenHands/enterprise/pull/1248
- fix(settings): correct the built-in git integration option in the MCP Library (OHE-3957) by @hieptl in https://github.com/OpenHands/enterprise/pull/1317
- fix: use http for localhost in get_default_web_url by @tofarr in https://github.com/OpenHands/enterprise/pull/1341
- fix(settings): show members the empty state for organization MCP servers (OHE-4117) by @hieptl in https://github.com/OpenHands/enterprise/pull/1336
- fix(settings): offer the organization scope for stdio servers in the MCP Library (OHE-4120) by @hieptl in https://github.com/OpenHands/enterprise/pull/1337
- fix(settings): keep MCP server settings on save and add an on/off switch (OHE-4139) by @hieptl in https://github.com/OpenHands/enterprise/pull/1340
- fix(sandbox): restore git credential helpers after resume from the owner’s user context (OHE-4141) by @tofarr in https://github.com/OpenHands/enterprise/pull/1339
- fix(git): return a repository’s default branch for Bitbucket DC and Azure DevOps (OHE-3919) by @hieptl in https://github.com/OpenHands/enterprise/pull/1309
- fix(orgs): show Git claims and warn when the default-org fallback ends (OHE-3717) by @hieptl in https://github.com/OpenHands/enterprise/pull/1356
- fix(auth): keep GitLab tokens and data per provider (OHE-4155) by @tofarr in https://github.com/OpenHands/enterprise/pull/1358
Software Agent SDK
- fix(tools): ship the browser recording JS helpers in the wheel by @onatozmenn in https://github.com/OpenHands/software-agent-sdk/pull/4445
- fix(workspace): look up provider tokens as GITHUB_TOKEN by @jpshackelford in https://github.com/OpenHands/software-agent-sdk/pull/5730
- fix: record positive usage costs for custom models by @rajshah4 in https://github.com/OpenHands/software-agent-sdk/pull/6539
- fix(agent-server): load skills marketplace from .plugin manifest first by @enyst in https://github.com/OpenHands/software-agent-sdk/pull/5767
- fix(sdk): accept large remote conversation state messages by @ak684 in https://github.com/OpenHands/software-agent-sdk/pull/6550
- fix(mcp): kill stdio subprocesses unconditionally on sync_close by @neubig in https://github.com/OpenHands/software-agent-sdk/pull/4862
- fix(sdk): stop asking for an emoji in generated conversation titles by @ak684 in https://github.com/OpenHands/software-agent-sdk/pull/6319
- fix(sdk): keep the first line’s indentation in commit file diffs by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6538
- fix(tools): pass the ripgrep pattern with -e so it cannot be read as a flag by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6537
- fix(agent-server): stop lost to a queued re-arm; event-socket replay races by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6577
- fix(agent-server): reject MCP servers with neither command nor url by @enyst in https://github.com/OpenHands/software-agent-sdk/pull/5796
- fix(sdk): skip a README of any case in recursive skill discovery by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6588
- fix(sdk): skip an undecodable top-level AGENTS.md instead of aborting by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6589
- fix(tools): fall back to Python search when ripgrep fails by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6593
- fix(sdk): read subagent frontmatter through a BOM and empty values by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6590
- fix(sdk): allow a case-only agent profile rename by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6598
- fix(sdk): list a git type change as an updated file by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6591
- fix(tools): report an unreadable file as a file editor error by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6596
- fix(tools): refuse str_replace when old_str matches at overlapping offsets by @yftx293 in https://github.com/OpenHands/software-agent-sdk/pull/6429
- fix(llm): preserve whitespace in multiline non-fncall parameter values by @wangxuzhou666-arch in https://github.com/OpenHands/software-agent-sdk/pull/6451
- fix(tools): keep CRLF line endings when the file editor writes a file by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6618
- fix(tools): apply a patch all-or-nothing and keep CRLF line endings by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6617
- fix(tools): expand brace patterns in the glob Python fallback by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6615
- fix(sdk): kill a timed-out sync hook’s whole process group by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6614
- fix(tools): expand brace globs in the grep include filter by @VascoSch92 in https://github.com/OpenHands/software-agent-sdk/pull/6636
- fix(sdk): resolve secret lookups outside the state lock before async tools run by @enyst in https://github.com/OpenHands/software-agent-sdk/pull/6662
- fix(terminal): let follow-ups reach a running command on the tmux pool by @enyst in https://github.com/OpenHands/software-agent-sdk/pull/6671
- fix(events): reopen a conversation over a damaged event file by @enyst in https://github.com/OpenHands/software-agent-sdk/pull/6669
- fix(browser): report a navigation blocked by allowed_domains as an error by @enyst in https://github.com/OpenHands/software-agent-sdk/pull/6661
- fix(agent-server): give each trajectory download its own temp zip by @enyst in https://github.com/OpenHands/software-agent-sdk/pull/5766
- fix(skills): point a truncated description at invoke_skill, not the SKILL.md path by @enyst in https://github.com/OpenHands/software-agent-sdk/pull/6664
Runtime API
- fix(k8s): keep the agent-server’s state off the agent’s /workspace mount (OHE-3812) by @hieptl in https://github.com/OpenHands/runtime-api/pull/781
- fix: preserve user perms under /workspace on resume by @jpshackelford in https://github.com/OpenHands/runtime-api/pull/757
Automation
- fix: allow in-place plugin configuration updates by @ak684 in https://github.com/OpenHands/automation/pull/708
- fix: preserve executable plugin specs through Git Sync by @ak684 in https://github.com/OpenHands/automation/pull/709

