claude_profile 1.3.1

Claude Code account credential management and token status
Documentation
# Verb :: assign

Writes the per-machine active marker (`_active_{machine}_{user}`) for a named account — without rotating credentials or modifying the `owner` field. Unlike `use`, `assign` does not touch `~/.claude/.credentials.json`. It is the canonical command for marker assignment only; ownership is managed by `.account.save` (see Feature 036).

### Nouns

| # | Noun | Command | Idempotent | Requires Session |
|---|------|---------|-----------|-----------------|
| 1 | [account]../command_noun/001_account.md | `.account.assign` | Yes | No |

### Behavioral Contract

**Pre-conditions:**
- Named account (or account resolved via `for::`) exists in credential store
- `$HOME` environment variable set

**Post-conditions:**
- Per-machine active marker file (`_active_{machine}_{user}`) written to credential store pointing to the named account
- `~/.claude/.credentials.json` unchanged
- `{name}.json` NOT modified — `owner` field and all other fields left untouched
- No credential rotation performed

**Side effects:**
- Writes marker file only; no other files modified

### Idempotency

**Yes.** Writing the same active marker repeatedly produces identical stored state. Repeated calls with the same `name::` and `for::` values are safe.

### Common Parameters

| Parameter | Semantics | Required |
|-----------|-----------|----------|
| `name::` | Account to mark as active; defaults to active account | No |
| `for::` | Target `USER@MACHINE` composite for the marker (default: current) | No |
| `dry::` | Validate without writing marker | No |

### State Transition Pattern

**Accumulates state.** Writes the per-machine active marker file only. No credential rotation; `~/.claude/.credentials.json` is not modified. `{name}.json` is not modified. The account's lifecycle state (saved/active) is unchanged.

```
[absent/saved/active] --account.assign--> [same state]  (marker written; {name}.json unchanged; credentials unchanged)
```

### Migration (Feature 037)

> `.account.assign` has been removed as a standalone working command (Feature 037). Its behavior is absorbed into `.accounts` and `.usage` as the `assign::1` mutation param.
> - `clp .account.assign name::X` → exits 1 with generic "unknown command" error (fully deregistered)
> - `clp .accounts assign::1 name::X` → writes marker (same behavior)
> - `clp .accounts assign::1 name::X for::U@M` → targeted machine marker (same behavior)
>
> See [feature/037_accounts_usage_param_unification.md]../../feature/037_accounts_usage_param_unification.md AC-08 through AC-12.

### Cross-References

| File | Relationship |
|------|-------------|
| [feature/032_account_assign.md]../../feature/032_account_assign.md | Marker write, `for::` resolution, sanitization rules |
| [feature/025_per_machine_active_marker.md]../../feature/025_per_machine_active_marker.md | `_active_{machine}_{user}` marker semantics |
| [feature/036_account_ownership.md]../../feature/036_account_ownership.md | Ownership model; enforcement gates G1–G8; ownership is stamped by `.account.save`, not `.account.assign` |
| [feature/037_accounts_usage_param_unification.md]../../feature/037_accounts_usage_param_unification.md | `assign::` absorbed as mutation param; `.account.assign` standalone removed; `for::` retained |

### Referenced Commands

| # | Command | Role |
|---|---------|------|
| 1 | [`.account.assign`]../command/001_account.md#command--16-accountassign | Write per-machine active marker without credential rotation (removed in Feature 037 — use `.accounts assign::1`) |