# `ClaudeWrapper.Commands.Auth`
[🔗](https://github.com/joshrotenberg/claude_wrapper_ex/blob/main/lib/claude_wrapper/commands/auth.ex#L1)

Authentication commands — login, logout, status, token setup.

# `auth_status`

```elixir
@type auth_status() :: %{
  logged_in: boolean(),
  auth_method: String.t() | nil,
  api_provider: String.t() | nil,
  email: String.t() | nil,
  org_id: String.t() | nil,
  org_name: String.t() | nil,
  subscription_type: String.t() | nil,
  extra: map()
}
```

# `login`

```elixir
@spec login(ClaudeWrapper.Config.t()) :: {:ok, String.t()} | {:error, term()}
```

Login via browser. This is interactive — the CLI will open a browser.

# `logout`

```elixir
@spec logout(ClaudeWrapper.Config.t()) :: {:ok, String.t()} | {:error, term()}
```

Logout.

# `setup_token`

```elixir
@spec setup_token(ClaudeWrapper.Config.t(), String.t()) ::
  {:ok, String.t()} | {:error, term()}
```

Set up an API token directly.

# `status`

```elixir
@spec status(ClaudeWrapper.Config.t()) :: {:ok, auth_status()} | {:error, term()}
```

Check authentication status.

Returns parsed status if the CLI supports JSON output, raw text otherwise.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
