Skip to content

feat(run): OpenClaw joins the supported agents table - #108

Merged
guyb1 merged 2 commits into
mainfrom
feat/openclaw-supported-agent
Jul 30, 2026
Merged

feat(run): OpenClaw joins the supported agents table#108
guyb1 merged 2 commits into
mainfrom
feat/openclaw-supported-agent

Conversation

@guyb1

@guyb1 guyb1 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

What

Two commits making OpenClaw a first-class, zero-config agent under onecli run:

  1. supportedAgents row — skills install to ~/.openclaw/skills (verified against the published package: it loads skills from join(CONFIG_DIR, "skills")), hook install skipped (its hook system is its own, not Claude-style settings.json).
  2. Automatic placeholder provider key — OpenClaw refuses to start a model turn without a provider key in its environment, and onecli run strips the server-provided ANTHROPIC_API_KEY, so a bare onecli run -- openclaw ... previously died on "Unknown model" unless the user hand-configured a placeholder. The agentSpec grows needsAnthropicKey: flagged agents get a self-describing placeholder (sk-ant-onecli-gateway-placeholder) ensured in the child env. An existing shell key wins (buildChildEnv passes those through today for every agent), and the gateway replaces x-api-key on every injected request either way — the placeholder can never reach the provider. Same pattern as the existing Codex auth stub.

Why it's known to work

  • Overwrite semantics pinned, not assumed: a new gateway unit test in the cloud repo (rides onecli-cloud#748) asserts injection replaces an agent-supplied x-api-key with the vault key, exactly once, on both edition builds — the property this whole design rests on.
  • Live end-to-end against a local EE stack (cloud gateway + api-server + KMS/Redis, OpenClaw in a sandbox container): a completely bare onecli run -- openclaw agent ... — no env wrapper, nothing in OpenClaw's config — booted the provider off the placeholder and completed the turn through the gateway, attributed to the right agent with injection_count=1 and the vault key upstream.

Verification

go build, go test -race (new TestEnsureEnv: append-when-absent, existing-value-wins without duplicates, no key-prefix false match; TestAgentSkillDir extended), golangci-lint 0 issues.

Companions: onecli/onecli-cloud#748 (Install page pill + the gateway overwrite pin + org-key /v1/user fix) · onecli/onecli-docs#13 (supported-agents row; tip updated to describe the automatic placeholder).

🤖 Generated with Claude Code

guyb1 and others added 2 commits July 29, 2026 23:38
Verified end to end against a local EE stack: OpenClaw honors the
injected proxy env (undici EnvHttpProxyAgent), loads skills from
~/.openclaw/skills, and its long-lived process is `openclaw gateway
run`. Hook install is skipped: its hook system is its own, not
Claude-style settings.json.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
OpenClaw refuses to start a model turn without a provider key in its
environment, and `onecli run` strips the server-provided
ANTHROPIC_API_KEY — so a bare `onecli run -- openclaw ...` died on
"Unknown model" unless the user hand-configured a placeholder. The
agentSpec grows needsAnthropicKey: agents flagged with it get a
self-describing placeholder key ensured in the child env (an existing
shell key wins; buildChildEnv passes those through today for every
agent). The gateway replaces x-api-key on every injected request, so
the placeholder never reaches the provider — pinned by a new gateway
unit test in the cloud repo. Same pattern as the Codex auth stub.

Proven live against a local EE stack: bare `onecli run -- openclaw
agent ...` (no env wrapper, nothing in OpenClaw's config) completed the
turn through the gateway with the vault key injected.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@guyb1
guyb1 merged commit 02a40ec into main Jul 30, 2026
2 checks passed
@guyb1
guyb1 deleted the feat/openclaw-supported-agent branch July 30, 2026 08:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant