Skip to content
Docs menu

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:

AccountTermsModel trainingRetention
Personal Claude Free, Pro, Max or UltraConsumer TermsYour choice: Anthropic trains on your sessions when the model-training setting is on5 years with training on, 30 days with it off
Claude Team or Enterprise seatCommercial TermsNo30 days (zero data retention available on Enterprise)
API key (Claude Console)Commercial TermsNo30 days (zero data retention available)
Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundrythe cloud provider's termsNoper 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.

KindWhen
clouda cloud provider variable is set, or claude auth status says third_party
api_keyclaude auth status says api_key or api_key_helper; without it, ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN is set
team_or_enterprisea claude.ai login while the managed settings file pins logins to the company's organisation
personalnot detected today: nothing documented tells a Pro or Max plan from a Team seat
unknowneverything 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) or block (every tool call is denied until you switch);
  • require_training_attestation: a session whose account may be personal (personal or unknown) needs tempa attest --no-training on the device, under the same on_violation.

How to switch

In Claude Code:

  • To the company's Team or Enterprise seat: /logout, then /login and choose the claude.ai account your admin invited. /status shows the organisation you are in.
  • To an API key: set the key your company gave you (ANTHROPIC_API_KEY, or an apiKeyHelper) and approve it when Claude Code asks; claude auth status then says api_key.
  • To a cloud provider: set the variables your company distributes (for example CLAUDE_CODE_USE_BEDROCK=1 with 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, run tempa 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: block

Tempa 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.