# Claude Code

URL: https://docs.hanzo.ai/docs/guides/coding/claude-code

> Run Claude Code with `hanzo --claude`: on your Claude plan with the Hanzo toolset beside it, or fully on Hanzo with `--cloud`.

## Set up

```bash
curl -fsSL hanzo.sh | sh
hanzo login
hanzo --claude
```

Give it a task as one quoted argument to run it headless: `hanzo --claude "fix the failing test in api/users"`. `claude-code` and `cc` are accepted spellings of `claude`.

## On your Claude plan (the default)

Claude Code uses its own login in `~/.claude`, and its model calls go to Anthropic on your Claude plan. The wrapper adds:

- **The Hanzo toolset.** The native `hanzo-mcp` that hanzo.sh installs beside `hanzo` is attached with `--mcp-config` for the run, through the CLI's own proxy, so Claude Code starts without waiting on it. Claude Code can then hand work to Enso (`llm`), Kai (`kai_decide`) and Hanzo's search tools, billed to your Hanzo plan. See [Hand work to Enso and Kai](https://docs.hanzo.ai/docs/guides/coding#hand-work-to-enso-and-kai).
- **The session** is registered in the cloud with its machine and directory. Pass `--no-link` to keep it local.
- **The summary** at the end names every toolset call and the model it reached.

## Fully on Hanzo (`--cloud`)

```bash
hanzo --claude --cloud
hanzo --claude --cloud --model enso-ultra
```

- **Model calls** go to `https://api.hanzo.ai`. The wrapper points Claude Code at it with `ANTHROPIC_BASE_URL` and sends your Hanzo token as the bearer in `ANTHROPIC_AUTH_TOKEN`, and clears any `ANTHROPIC_API_KEY` in your shell so one credential is in play. The token reaches the process through its environment, never its arguments.
- **The model** is `enso-auto` unless you set another with `--model`, `ANTHROPIC_MODEL` or `model` in `~/.hanzo/settings.json`. `--model zen6` runs Zen 6, the open-weights model. Claude Code is handed a `claude-*` name so it grants the model's real context window, and the wrapper maps that name back to the Hanzo model before the request leaves the process.
- **Claude Code's own slots** are Enso tiers: Haiku, which runs background work and routine turns, is `enso-flash`; Sonnet is `enso-pro`; Opus and Fable are `enso-ultra`. [Enso](https://docs.hanzo.ai/docs/models/enso#claude-code) has what each tier costs and which models answer it.
- **Usage** is metered into your org at api.hanzo.ai, so it appears in the cloud whichever machine you ran on. Your org's cloud tools are added beside the toolset, because the process already holds your token.
- **Claude Code's home** for the run is `~/.hanzo/claude`, so its saved model choice and your Hanzo settings do not overwrite each other.

## What does not load

- A repository's own `.mcp.json` and `.claude/settings*.json` hooks do not load, because a repository is untrusted and its hooks would run with your credentials in the environment. `--project-mcp` opts in for a repository you trust.
- With `--ask` the tool asks before each action. By default the wrapper starts Claude Code with `--dangerously-skip-permissions`, as `autoApprove` in `~/.hanzo/settings.json` says.

## See usage

```bash
hanzo console          # press 6 for Savings
hanzo usage summary --range 7d
```

[How to read the summary →](https://docs.hanzo.ai/docs/guides/coding#what-a-session-used)
