Better Harness Tools, not merely storing the archive of leaked Claude Code but also make real things done. Now rewriting in Rust.
Go to file
YeonGyu-Kim 3a533ceba0 fix(#152-follow-up-2): claw bootstrap-plan rejects trailing arguments
## What Was Broken

`claw bootstrap-plan garbage` silently accepted the `garbage` argument:

    $ claw bootstrap-plan garbage
    - CliEntry
    - FastPathVersion
    - StartupProfiler
    - ...

Same pattern as #152 init follow-up (previous cycle): a no-arg diagnostic
verb was missing its `rest.len()` guard.

## What This Fix Does

Add parse-time length check before constructing CliAction::BootstrapPlan:

    "bootstrap-plan" => {
        if rest.len() > 1 {
            return Err(format!(
                "unrecognized argument \`{}\` for subcommand \`bootstrap-plan\`",
                rest[1]
            ));
        }
        Ok(CliAction::BootstrapPlan { output_format })
    }

## Dogfood Verification

Before:
    $ claw bootstrap-plan garbage
    - CliEntry
    - FastPathVersion
    (continues listing...)

After:
    $ claw bootstrap-plan garbage
    [error-kind: cli_parse]
    error: unrecognized argument `garbage` for subcommand `bootstrap-plan`

    $ claw bootstrap-plan  (no args)
    - CliEntry
    - FastPathVersion
    (still works normally)

## Full No-Arg Verb Suffix-Guard Sweep (Post-Fix)

All no-arg verbs now uniformly reject trailing garbage:

| Verb | Status |
|---|---|
| help garbage |  rejects |
| version garbage |  rejects |
| status garbage |  rejects |
| sandbox garbage |  rejects |
| doctor garbage |  rejects |
| state garbage |  rejects |
| init garbage |  rejects (previous cycle #55) |
| diff garbage |  rejects |
| plugins garbage |  rejects |
| skills garbage |  rejects |
| system-prompt garbage |  rejects |
| dump-manifests garbage |  rejects |
| bootstrap-plan garbage |  rejects (this commit) |
| acp garbage |  rejects |

Legitimate positionals (not a bug):
- `export <file-path>` — file path is the intended arg
- `config <section>` — flexible section filter (design question, not bug)

## Non-Regression

- `claw bootstrap-plan` (no args) still works 
- All 180 binary tests pass 
- All 466 library tests pass 

## Related

- #152 follow-up (init suffix guard, previous cycle)
- Completes diagnostic-verb suffix-guard contract hygiene
2026-04-23 02:17:16 +09:00
.claude/sessions fix: tool input {} prefix bug, tool display after accumulation, max_iterations unlimited 2026-04-01 02:24:18 +00:00
.github Close the clawability backlog with deterministic CLI output and lane lineage 2026-04-05 18:41:02 +00:00
assets Refresh docs to match ultraworkers/claw-code source of truth 2026-04-05 18:11:25 +00:00
docs US-010: Add model compatibility documentation 2026-04-16 10:55:58 +00:00
rust fix(#152-follow-up-2): claw bootstrap-plan rejects trailing arguments 2026-04-23 02:17:16 +09:00
src feat: #180 implement --version flag for metadata protocol (#28 proactive demand) 2026-04-22 21:56:20 +09:00
tests test: cycle #30 — lock OPT_OUT surface rejection (close parity test gap) 2026-04-22 22:06:47 +09:00
.claude.json feat: default OAuth config for API endpoint, merge UI polish rendering 2026-04-01 03:20:26 +00:00
.claw.json ROADMAP #4.44.5: Ship/provenance opacity — filed from dogfood 2026-04-20 14:35:07 +09:00
.gitignore chore: gitignore .port_sessions/ to prevent dogfood-run pollution 2026-04-22 18:06:20 +09:00
CLAUDE.md docs: ERROR_HANDLING.md — unified error handler pattern for orchestration code 2026-04-22 20:42:43 +09:00
Containerfile Document a repeatable container workflow for the Rust workspace 2026-04-05 18:11:25 +00:00
ERROR_HANDLING.md docs+test: cycle #29 — document + lock text-mode vs JSON-mode exit divergence 2026-04-22 22:03:08 +09:00
OPT_OUT_AUDIT.md docs: OPT_OUT_DEMAND_LOG.md — evidentiary base for governance decisions 2026-04-22 20:34:35 +09:00
OPT_OUT_DEMAND_LOG.md docs: OPT_OUT_DEMAND_LOG.md — evidentiary base for governance decisions 2026-04-22 20:34:35 +09:00
PARITY.md docs(PARITY.md): comprehensive status update — all 9 lanes merged, stubs replaced 2026-04-03 19:39:28 +09:00
PHILOSOPHY.md docs: add philosophy document for autonomous claw development 2026-04-04 16:51:51 +00:00
README.md docs: README.md — promote ERROR_HANDLING.md to first-class navigation 2026-04-22 20:49:09 +09:00
ROADMAP.md ROADMAP #251: dispatch-order bug — session-management verbs fall through to Prompt before credential check (filed by gaebal-gajae; formalized by Jobdori cycle #40) 2026-04-23 00:06:46 +09:00
SCHEMAS.md feat: #164 Stage B prep — add cancel_observed field to TurnResult 2026-04-22 19:44:47 +09:00
USAGE.md docs: USAGE.md — cross-link ERROR_HANDLING.md for subprocess orchestration 2026-04-22 21:19:03 +09:00
install.sh feat: b6-codex-session — batch 6 2026-04-07 15:52:30 +09:00
prd.json US-024: Add token limit metadata for kimi models 2026-04-17 04:15:38 +00:00
progress.txt US-011: Performance optimization for API request serialization 2026-04-16 11:11:45 +00:00

README.md

Claw Code

ultraworkers/claw-code · Usage · Error Handling · Rust workspace · Parity · Roadmap · UltraWorkers Discord

Star history for ultraworkers/claw-code

Claw Code

Claw Code is the public Rust implementation of the claw CLI agent harness. The canonical implementation lives in rust/, and the current source of truth for this repository is ultraworkers/claw-code.

[!IMPORTANT] Start with USAGE.md for build, auth, CLI, session, and parity-harness workflows. Make claw doctor your first health check after building, use rust/README.md for crate-level details, read PARITY.md for the current Rust-port checkpoint, and see docs/container.md for the container-first workflow.

ACP / Zed status: claw-code does not ship an ACP/Zed daemon entrypoint yet. Run claw acp (or claw --acp) for the current status instead of guessing from source layout; claw acp serve is currently a discoverability alias only, and real ACP support remains tracked separately in ROADMAP.md.

Current repository shape

  • rust/ — canonical Rust workspace and the claw CLI binary
  • USAGE.md — task-oriented usage guide for the current product surface
  • ERROR_HANDLING.md — unified error-handling pattern for orchestration code
  • PARITY.md — Rust-port parity status and migration notes
  • ROADMAP.md — active roadmap and cleanup backlog
  • PHILOSOPHY.md — project intent and system-design framing
  • SCHEMAS.md — JSON protocol contract (Python harness reference)
  • src/ + tests/ — companion Python/reference workspace and audit helpers; not the primary runtime surface

Quick start

[!NOTE] [!WARNING] cargo install claw-code installs the wrong thing. The claw-code crate on crates.io is a deprecated stub that places claw-code-deprecated.exe — not claw. Running it only prints "claw-code has been renamed to agent-code". Do not use cargo install claw-code. Either build from source (this repo) or install the upstream binary:

cargo install agent-code   # upstream binary — installs 'agent.exe' (Windows) / 'agent' (Unix), NOT 'agent-code'

This repo (ultraworkers/claw-code) is build-from-source only — follow the steps below.

# 1. Clone and build
git clone https://github.com/ultraworkers/claw-code
cd claw-code/rust
cargo build --workspace

# 2. Set your API key (Anthropic API key — not a Claude subscription)
export ANTHROPIC_API_KEY="sk-ant-..."

# 3. Verify everything is wired correctly
./target/debug/claw doctor

# 4. Run a prompt
./target/debug/claw prompt "say hello"

[!NOTE] Windows (PowerShell): the binary is claw.exe, not claw. Use .\target\debug\claw.exe or run cargo run -- prompt "say hello" to skip the path lookup.

Windows setup

PowerShell is a supported Windows path. Use whichever shell works for you. The common onboarding issues on Windows are:

  1. Install Rust first — download from https://rustup.rs/ and run the installer. Close and reopen your terminal when it finishes.
  2. Verify Rust is on PATH:
    cargo --version
    
    If this fails, reopen your terminal or run the PATH setup from the Rust installer output, then retry.
  3. Clone and build (works in PowerShell, Git Bash, or WSL):
    git clone https://github.com/ultraworkers/claw-code
    cd claw-code/rust
    cargo build --workspace
    
  4. Run (PowerShell — note .exe and backslash):
    $env:ANTHROPIC_API_KEY = "sk-ant-..."
    .\target\debug\claw.exe prompt "say hello"
    

Git Bash / WSL are optional alternatives, not requirements. If you prefer bash-style paths (/c/Users/you/... instead of C:\Users\you\...), Git Bash (ships with Git for Windows) works well. In Git Bash, the MINGW64 prompt is expected and normal — not a broken install.

Post-build: locate the binary and verify

After running cargo build --workspace, the claw binary is built but not automatically installed to your system. Here's where to find it and how to verify the build succeeded.

Binary location

After cargo build --workspace in claw-code/rust/:

Debug build (default, faster compile):

  • macOS/Linux: rust/target/debug/claw
  • Windows: rust/target/debug/claw.exe

Release build (optimized, slower compile):

  • macOS/Linux: rust/target/release/claw
  • Windows: rust/target/release/claw.exe

If you ran cargo build without --release, the binary is in the debug/ folder.

Verify the build succeeded

Test the binary directly using its path:

# macOS/Linux (debug build)
./rust/target/debug/claw --help
./rust/target/debug/claw doctor

# Windows PowerShell (debug build)
.\rust\target\debug\claw.exe --help
.\rust\target\debug\claw.exe doctor

If these commands succeed, the build is working. claw doctor is your first health check — it validates your API key, model access, and tool configuration.

Optional: Add to PATH

If you want to run claw from any directory without the full path, choose one of these approaches:

Option 1: Symlink (macOS/Linux)

ln -s $(pwd)/rust/target/debug/claw /usr/local/bin/claw

Then reload your shell and test:

claw --help

Option 2: Use cargo install (all platforms)

Build and install to Cargo's default location (~/.cargo/bin/, which is usually on PATH):

# From the claw-code/rust/ directory
cargo install --path . --force

# Then from anywhere
claw --help

Option 3: Update shell profile (bash/zsh)

Add this line to ~/.bashrc or ~/.zshrc:

export PATH="$(pwd)/rust/target/debug:$PATH"

Reload your shell:

source ~/.bashrc  # or source ~/.zshrc
claw --help

Troubleshooting

  • "command not found: claw" — The binary is in rust/target/debug/claw, but it's not on your PATH. Use the full path ./rust/target/debug/claw or symlink/install as above.
  • "permission denied" — On macOS/Linux, you may need chmod +x rust/target/debug/claw if the executable bit isn't set (rare).
  • Debug vs. release — If the build is slow, you're in debug mode (default). Add --release to cargo build for faster runtime, but the build itself will take 510 minutes.

[!NOTE] Auth: claw requires an API key (ANTHROPIC_API_KEY, OPENAI_API_KEY, etc.) — Claude subscription login is not a supported auth path.

Run the workspace test suite after verifying the binary works:

cd rust
cargo test --workspace

Documentation map

Ecosystem

Claw Code is built in the open alongside the broader UltraWorkers toolchain:

Ownership / affiliation disclaimer

  • This repository does not claim ownership of the original Claude Code source material.
  • This repository is not affiliated with, endorsed by, or maintained by Anthropic.