> ## 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.

# OpenHands Enterprise 0.105.0

> Release notes for OpenHands Enterprise version 0.105.0

# 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 install` without 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 `s3` or `gcs` package store, and `automation.upgradeAcknowledged: true` on 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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](https://github.com/OpenHands/automation/pull/615)
* feat(events): parse GitHub workflow\_run events by @hieptl in [https://github.com/OpenHands/automation/pull/721](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](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](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](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](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](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](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](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](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](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](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](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](https://github.com/OpenHands/enterprise/pull/1259)
* fix: save conversation costs before automation cleanup by @rajshah4 in [https://github.com/OpenHands/enterprise/pull/1235](https://github.com/OpenHands/enterprise/pull/1235)
* fix(github): explain sandbox usage limit failures by @ak684 in [https://github.com/OpenHands/enterprise/pull/952](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](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](https://github.com/OpenHands/automation/pull/709)

## Component Versions

| Component | Version |
| - | - |
| enterprise-server | 1.92.0 |
| agent-server | 1.62.0-python |
| agent-canvas | 1.40.0 |
| automation | 1.32.1 |
| runtime-api | 0.14.0 |

## Full Changelog

* [Enterprise Server releases](https://github.com/OpenHands/enterprise/releases)
* [Software Agent SDK releases](https://github.com/OpenHands/software-agent-sdk/releases)
* [Runtime API releases](https://github.com/OpenHands/runtime-api/releases)
* [Automation releases](https://github.com/OpenHands/automation/releases)
* [OpenHands Cloud releases](https://github.com/OpenHands/OpenHands-Cloud/releases)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.