Claude accounts: which one you use matters
Tempa helps a company see and steer which kind of Claude account its developers use in Claude Code (TEMPA-132). This page explains why, what Tempa can and cannot see, and how to switch. The research behind it, with the source and confidence of every signal, is in spikes/claude-account-type.md.
Why it matters
Claude Code sends your prompts, the code it reads and its tool results to the model. What Anthropic may do with that depends on the account the session uses, not on Claude Code:
| Account | Terms | Model training | Retention |
|---|---|---|---|
| Personal Claude Free, Pro, Max or Ultra | Consumer Terms | Your choice: Anthropic trains on your sessions when the model-training setting is on | 5 years with training on, 30 days with it off |
| Claude Team or Enterprise seat | Commercial Terms | No | 30 days (zero data retention available on Enterprise) |
| API key (Claude Console) | Commercial Terms | No | 30 days (zero data retention available) |
| Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry | the cloud provider's terms | No | per provider |
Source: Anthropic's Claude Code data usage page (training policy and retention per account type) and the Privacy Policy. Company code in a personal account with training on is a contractual and confidentiality risk for the company and often for its clients.
What Tempa can see, and what not
At every session start the Tempa CLI classifies the session's account from documented, non-secret signals only: the cloud provider variables (CLAUDE_CODE_USE_BEDROCK and friends), claude auth status (its authMethod), whether ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN or CLAUDE_CODE_OAUTH_TOKEN are set (never their value), and whether Claude Code's managed settings file pins logins to an organisation (forceLoginOrgUUID). It never reads the Keychain, ~/.claude/.credentials.json, a token or your e-mail address.
| Kind | When |
|---|---|
cloud | a cloud provider variable is set, or claude auth status says third_party |
api_key | claude auth status says api_key or api_key_helper; without it, ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN is set |
team_or_enterprise | a claude.ai login while the managed settings file pins logins to the company's organisation |
personal | not detected today: nothing documented tells a Pro or Max plan from a Team seat |
unknown | everything else, including a claude.ai login without a pinned organisation, and every harness other than Claude Code |
So a claude.ai subscription login is unknown unless the company pins its organisation. Tempa says so instead of guessing.
The model-training setting is not visible to Tempa (it lives in your claude.ai privacy settings). When your company requires it, you confirm it yourself with tempa attest --no-training: a statement, recorded on this device with its date and the CLI version, and sent with the heartbeat.
What leaves your laptop: the kind (team_or_enterprise, unknown, ...), what it was based on (managed_org, subscription, ...) and the attestation date, with the heartbeat. Never which account, never an e-mail address or account ID. Admins see the kind per device in the fleet view and counts per team on the dashboard.
What your company can set
The config setting account_policy (config.md):
allowed_kinds: the kinds a session may use (default: all);on_violation:inform(default: a message at session start),ask(also the first tool call of the session asks you to confirm) orblock(every tool call is denied until you switch);require_training_attestation: a session whose account may be personal (personalorunknown) needstempa attest --no-trainingon the device, under the sameon_violation.
How to switch
In Claude Code:
- To the company's Team or Enterprise seat:
/logout, then/loginand choose the claude.ai account your admin invited./statusshows the organisation you are in. - To an API key: set the key your company gave you (
ANTHROPIC_API_KEY, or anapiKeyHelper) and approve it when Claude Code asks;claude auth statusthen saysapi_key. - To a cloud provider: set the variables your company distributes (for example
CLAUDE_CODE_USE_BEDROCK=1with the AWS profile), see Bedrock, Vertex AI, Foundry. - Staying on a personal account (when your company allows it): turn model training off at claude.ai/settings/data-privacy-controls, then run
tempa attest --no-training. If you turn it on again, runtempa attest --withdraw.
Then start a new session: the check runs at session start. tempa attest (without options) shows the kind Tempa saw last and your attestation.
For admins: make Team or Enterprise visible
Deploy Claude Code's managed settings file with your organisation ID (Restrict login to your organization):
{
"forceLoginMethod": "claudeai",
"forceLoginOrgUUID": ["<your organisation id from claude.ai admin settings>"]
}at /Library/Application Support/ClaudeCode/managed-settings.json (macOS), /etc/claude-code/managed-settings.json (Linux and WSL) or C:\Program Files\ClaudeCode\managed-settings.json (Windows). Claude Code then refuses claude.ai logins from other organisations, and Tempa reports your developers' claude.ai logins as team_or_enterprise. Tempa reads only this file; an organisation pinned through an MDM profile, the registry or server-managed settings is not seen (yet).
A typical strict policy for a company with Team seats:
settings:
account_policy:
mode: locked
value:
allowed_kinds: [team_or_enterprise, api_key, cloud]
on_violation: blockTempa is guardrails for good-faith teams, not DLP: the check runs on the laptop, and someone with admin rights on it can change what it sees. Pair it with your MDM where that matters.