Run Claude Code CLI as a LangBot Runner.
- Runner ID:
plugin:langbot-team/ClaudeCodeAgent/default - Version:
0.1.3 - Repository: https://github.com/langbot-app/langbot-plugins/tree/main/Runner/claude-code-agent
- Enabled:
streaming,tool calling,knowledge retrieval,steering - Not declared:
multimodal input,interrupt
| Field | Type | Required | Default |
|---|---|---|---|
daemon-enabled |
boolean |
No | false |
daemon-host |
string |
No | 127.0.0.1 |
daemon-port |
integer |
No | 8767 |
daemon-token |
secret |
No | Empty |
location |
select |
Yes | local |
workspace |
string |
No | Empty |
advanced-settings |
boolean |
No | false |
command |
string |
No | claude |
args-json |
string |
No | [] |
env-json |
string |
No | {} |
ssh-target |
string |
No | Empty |
ssh-port |
integer |
No | 22 |
daemon-id |
string |
No | Empty |
timeout |
integer |
No | 300 |
streaming |
boolean |
No | true |
reuse-session |
boolean |
No | true |
dangerously-skip-permissions |
boolean |
No | true |
knowledge-bases |
knowledge-base-multi-selector |
No | [] |
langbot-assets-enabled |
boolean |
No | true |
mcp-bridge-transport |
select |
No | auto |
mcp-servers-json |
string |
No | [] |
tools:detail,callknowledge_bases:retrievehistory:page
- Install the plugin from the LangBot plugin marketplace.
- Select the Runner ID below in the Pipeline Runner selector.
- Fill in connection settings from the table and store credentials in secret fields in the admin UI.
-
The runner can use only LangBot resources authorized for the current run.
-
By default, Claude Code runs with
--dangerously-skip-permissionsbecause LangBot does not yet expose an interactive approval flow. Use it only with trusted workspaces and a constrained operating-system account. Setdangerously-skip-permissionsto false to restore Claude Code's normal permission checks. -
Availability, model abilities, and rate limits depend on the external service.
-
See the localized README files under
readme/for translated guidance. -
Follow-ups are injected between turns, not mid-token.
-
Follow-up turns currently carry text only; attachments on follow-ups are not yet forwarded.
-
Steering only applies when the run has a conversation scope; otherwise the runner transparently falls back to single-turn execution.
The runner exposes a real MCP tool named ask_user_question through the
run-scoped LangBot MCP bridge. Its standard Claude tool_use event is converted
to LangBot's provider-neutral interaction.requested contract. The CLI process
is stopped while the user is answering. A card submission starts a new
AgentRun, resumes the same Claude Code session, and sends the answer as the next
authoritative user turn. Claude CLI must complete an MCP call before persisting
a resumable session, so it cannot accept a second result for the old
tool_use_id after the process exits. No Python coroutine or Claude process is
kept waiting for the user.
This version pins langbot-plugin==0.6.1 and remains dedicated; no shared-worker eligibility is claimed.
It is a candidate, not a certificate or proof of vendor execution. Local,
remote-SSH and daemon modes remain available. Native children use the worker's
nsjail/cgroup policy, not the separate Box managed-process quota.
- Shared native mode defaults to
/data/workspace, an installation-private writable directory. Explicit native paths must exist and be writable inside the jail;/pluginis read-only. Dedicated/OSS defaults are unchanged. - Shared daemon listeners require a different random token per installation
(at least 32 characters, at least 12 distinct characters; generate with
python -c 'import secrets; print(secrets.token_urlsafe(32))'). Length checks cannot prove randomness or cross-installation uniqueness: provision unique secrets, do not reuse the example/config default. Loopback is shared between workers. Assign a unique explicitdaemon-portper installation and configure TLS routing for remote clients; port conflicts fail with configuration guidance. - Upgrade both
daemon.pyand its entirepkg/directory from this exact plugin version on the target. Stock b5/older clients are rejected: the bundled plugin-owned relay negotiatescoding-relay-v1. No installed SDK is patched. - A daemon ID cannot replace a connected socket. Jobs/events/MCP/finish belong to the accepted socket incarnation. Cancellation revokes run tools and waits for client process-group cleanup before acknowledging, or fences that daemon. A disconnect cancels and awaits the client's jobs before any reconnect.
- Unresolved shared jobs retain
.pendingmarkers under/data/.coding-relay-v1/<runner-prefix>/; worker restart does not clear them. Stop and verify all remote jobs on that target before an operator removes its marker and reconnects. Never rename the target to bypass a fence. An already dispatched MCP/SSH/upstream side effect is not rolled back by cancel. - Remote SSH/daemon accounts are trusted execution targets, not independent tenant sandboxes. Terminating local SSH does not prove remote process-tree exit; use a controlled target and verify remote quiescence before reuse. POSIX cleanup covers descendants that remain in the launched process group; deliberately detached processes require target-owner cleanup.
- Install reviewed CLI/SSH binaries at jail-visible locations and provision installation-owned credentials. These are functional prerequisites, separate from certification, signing, and two-Workspace live acceptance. Do not relax global Box policy or use unreviewed automatic installers to satisfy them.