Profiles · OpenHands
OpenHands
Operator Stance · as of 2026-06-03
- Use it for
- Teams that want the platform to own sandboxing, evaluation, and sub-agent posture, and are willing to take the platform's defaults rather than build their own. Ops shops needing parity across GUI, CLI, and SDK from a single tool.
- Avoid it for
- Operators who want governance to live in their own codebase — OpenHands ships sub-agent delegation, critic scoring, and sandbox grouping as platform decisions, not knobs you bolt on.
- Watch next
- Whether the critic score correlates with operational outcomes anyone actually measures, and whether sub-agent delegation gets adopted enough to justify the new orchestration surface.
Active Claims
- Api Key Redaction · verified 2026-05-07
- Secret Injection Subprocess · verified 2026-05-07
- Sandbox Grouping Ui · verified 2026-05-07
- Self Hosted Gitlab · verified 2026-05-07
- Subagent Delegation Opt In · verified 2026-05-12
- Critic Result Gui · verified 2026-05-12
- Acp Agent Settings Ui · verified 2026-05-27
- Org Level Llm Profiles · verified 2026-05-27
- Mcp Acp Env Per Org Member · verified 2026-05-27
- Frontend Cve Cluster And Acp Secrets · verified 2026-06-03
OpenHands
Operator Read
OpenHands is an operating environment, not a harness — and as of the 2026-05-13 → 2026-05-27 window, an environment that explicitly fronts other harnesses. The Settings → Agent ACP page lets an operator point OpenHands at Claude Code, Codex, Gemini CLI, or a custom command as the actual agent doing the work, with LLM/Condenser/MCP settings greyed out because the back-end agent owns those. Org-level LLM profiles add the policy substrate that positioning requires. Adopting OpenHands now means choosing between owning the agent surface yourself (built-in agent) or shelling out to a third-party agent under OpenHands' RBAC, sandboxing, and integrations.
The ACP Front-End Move
PR #14401 (merged
2026-05-15) ships a Settings → Agent page that wires OpenHands to
external Agent Client Protocol agents — Claude Code, Codex, Gemini
CLI, or a custom command. While ACP is active, LLM / Condenser / MCP
settings grey out and route loaders redirect to /settings/agent. The
SDK bumps to v1.22.1 with a unified /api/conversations endpoint
across built-in and ACP agents. Feature flag ENABLE_ACP defaults
false; turn it on to evaluate. This is the cleanest evidence that
OpenHands is positioning as the enterprise GUI shell around third-party
agents, not just as a harness in its own right.
PR #14406 (merged
2026-05-27) adds organization-level LLM profile storage in SaaS mode.
Migration 116 adds an encrypted llm_profiles JSON column on the org
table; six CRUD endpoints under /api/organizations/{org_id}/profiles
expose them with two-tier permissions (VIEW_ORG_SETTINGS to read,
EDIT_ORG_SETTINGS to create/update/delete/rename/activate). Activate
is the load-bearing operation — the same transaction updates the org's
active profile and the acting member's settings diff with
SELECT ... FOR UPDATE serializing concurrent writes. Team-org UI is
gated on a follow-up PR not in window.
Multi-tenant SaaS operators should also note
PR #14528 (merged
2026-05-22): a quiet but security-grade fix. Pre-fix, MCP server and
acp_env configurations were broadcast to every org member's row. The
fix splits agent settings into shared and private halves and strips
legacy leaked values on read. Operators on pre-2026-05-22 deployments
should rotate MCP credentials added by individual org members.
Platform Ownership Surfaces
Sub-agent delegation is OpenHands' clearest "platform owns the routing"
move. Behind
enable_sub_agents
(default off), work is routed to specialized built-in agents — bash-runner,
code-explorer, general-purpose, web-researcher — each with tool surfaces
defined by TaskToolSet in its config. Custom sub-agents live in
.agents/agents/*.md. Whether tool restrictions are runtime-enforced or
instruction-level is not yet confirmed by public evidence and remains an open
question to investigate before relying on the boundary.
Treat critic scoring as an opt-in evaluation surface, not a verdict. The
CriticResult GUI
displays a 0–1 score, 0–5 stars, and color-coded bands (green ≥60%, yellow
≥40%, red <40%) across agent_behavioral_issues, user_followup_patterns,
and infrastructure_issues. Turn it on only if you can route the extra
model spend separately (CRITIC_API_KEY) and test whether the score
predicts outcomes your team already cares about. Whether it shows at all
is deployment-controlled — OH_ENABLE_CRITIC_BY_DEFAULT defaults disabled;
per-instance disable is verification.critic_enabled = false.
The sandbox grouping strategy is now a
user-configurable UI option;
operators select grouping policy without editing config files. KVM
acceleration via SANDBOX_KVM_ENABLED (v1.7.0) cuts sandbox startup latency
on hosts that support it — opt-in flag.
Security Posture
Credential handling shows active maintenance, not assumed defaults. The log redaction commit scrubs credential patterns from logs before write. ACP subprocesses receive injected secrets without the primary agent context carrying those secrets — useful for tools that need credentials the agent itself should not see. Debug logging of hook configuration secrets has been removed. Track these in commit history rather than docs; the pattern is fixes-as-they- ship rather than a published security policy.
Integration Reach
OpenHands runs on self-hosted GitLab, not just cloud — operators on private GitLab can connect without a cloud-GitLab account. The platform ships GUI, CLI, SDK, and a hosted cloud deployment path with built-in Slack, Jira, Linear, and GitHub integrations. The reach is real; so is the deployment dependency: Docker and container support are required for the sandbox model.
What You're Trading
Adopt OpenHands when you want the platform to own sandboxing, evaluation, and sub-agent posture, and when feature parity across GUI / CLI / SDK matters more than building your own thin layer. Skip it when you want governance to live in your own codebase — OpenHands ships those decisions as platform defaults, not knobs you bolt on. The trade is real and intentional: less ownership of the agent surface in exchange for less integration work.
Posture basis: 2026-05-07-openhands-platform-hardening,
2026-05-12-openhands-subagent-delegation-and-critic-evaluation,
2026-05-27-openhands-acp-ui-and-org-llm-profiles.
Open Questions
- When OpenHands is fronting Claude Code, Codex, or Gemini CLI via ACP, how do the org-level LLM profile model and the back-end agent's own policy surfaces compose? OpenHands greys out LLM/Condenser/MCP because the back-end owns those, but the org-level profile still declares preferences. Resolution rule is not documented.
- The team-org UI for org-level LLM profiles is a follow-up PR not yet in window. When does team-org adoption become usable?
- Have multi-tenant operators rotated MCP credentials that may have been cross-contaminated pre-2026-05-22? There is no advisory page; the leak is fixed but the audit step is operator-owned.
- No tagged release in window — when does the next 1.x consolidate the ACP UI, org-level LLM profiles, MCP/ACP env scoping, and enterprise DC integrations? Operators on the release channel see none of this until then.
- Is
enable_sub_agentsa user-level or operator-level setting in multi-user deployments? Can an operator force sub-agents off platform-wide, or must each user opt in individually? - What constraints govern custom sub-agents defined in
.agents/agents/*.md? Which tools can a custom sub-agent access, and how is its tool surface declared or restricted? - How is the critic score (0--1) calibrated across session types? What separates
agent_behavioral_issuesfromuser_followup_patternsin practice? - Does the KVM sandbox acceleration path (
SANDBOX_KVM_ENABLED) change the security boundary of the sandbox, or only its startup latency?
What To Watch Next
- The next 1.x release consolidating the in-window work: ACP UI, org-level LLM profiles, MCP/ACP env scoping, Azure DevOps via Entra ID, Bitbucket DC + Jira DC integrations with KOTS-managed service accounts. The work has shipped on main; the operator-visible consolidation has not.
- Team-org UI for org-level LLM profiles (follow-up PR not in window).
- The composition question: when OpenHands fronts Claude Code via
ACP, which side's policy wins? OpenHands org-level LLM profile, or
Claude Code's
~/.claude/settings.json? This is the schema-shape question recorded in amendment-006 (composition findings). - The
acp_providersregistry: which back-end agents land first and which take longer to integrate. The choice is a signal about OpenHands' positioning relative to each provider. - Runtime enforcement of custom sub-agent tool lists: does the registry/parser
construct agents with fixed tool lists that cannot be bypassed, or is
TaskToolSetan instruction-level restriction? Code or runtime-probe evidence would resolve this. See PR #14122 and SDK PR #2948. - Deployment/org-level controls for sub-agents and critic: whether an operator can set platform-wide policy on both surfaces, or must manage per-user settings.
- Critic calibration and cost routing: what does a score of 0.4 mean across
session types, and what does
CRITIC_API_KEYrouting look like in multi-user deployments? - Whether OpenHands' RBAC, usage reporting, and budgeting surfaces extend to cover sub-agent delegation and critic evaluation spend.
- Sub-agent delegation documentation: currently available via PR #14122 but not in main docs. Watch for official docs coverage.
Featured in
- The Policy You Wrote Wasn't the Policy You Had · 2026-06-03
- Auto Stops Asking · 2026-05-27
- Governance Becomes Enforcement · 2026-05-12
- The Harness Leaves The Chat Box · 2026-05-07
Source contract: sources/openhands.yml · https://openhands.dev/
Profiles are maintained by the Bitter research loop.