---
title: Set up several clients at once (looot init)
description: Run looot init to write a header-token entry into Claude Code, Cursor and Codex in one step.
sidebar:
  label: looot init
---

The `looot` CLI writes a header-token entry into several clients for you, so you don't edit
each config file by hand.

```bash
looot init
```

It runs `looot login` if you're not signed in, detects the clients it knows how to configure, and
asks before writing a `looot` entry into each. `--yes` answers yes to every prompt, `--dry-run`
writes nothing. The entry references the `LOOOT_TOKEN` environment variable, never the token
itself, and `init` prints the line to add to your shell profile:

```bash
export LOOOT_TOKEN="$(looot token --reveal 2>/dev/null)"
```

| Client | File `init` writes | Token reference |
| --- | --- | --- |
| Claude Code | `~/.claude.json` | `Bearer ${LOOOT_TOKEN}` |
| Cursor | `~/.cursor/mcp.json` | `Bearer ${env:LOOOT_TOKEN}` |
| Codex | `~/.codex/config.toml` | `bearer_token_env_var = "LOOOT_TOKEN"` |

`--project` writes the project-level files; without it, `init` writes the user-level ones. `--embed` writes the
token itself into the config, for a client that can't read environment variables.
`looot mcp install --client claude-code|cursor|codex|generic` prints one client's config without
writing anything, so you can paste it in by hand.

:::note
A desktop app started from the Dock, Start menu or Finder doesn't read your shell profile, so it
won't see `LOOOT_TOKEN`. If a client `init` configured this way can't connect, remove the header
from its entry and use browser sign-in instead.
:::

<Related />
