Files
codeaashu-claude-code/prompts/05-env-and-auth.md
ashutoshpythoncs@gmail.com b564857c0b claude-code
2026-03-31 18:58:05 +05:30

3.7 KiB

Prompt 05: Environment Configuration & API Authentication

Context

You are working in /workspaces/claude-code. The CLI needs an Anthropic API key to function. The auth system supports multiple backends:

  • Direct API (ANTHROPIC_API_KEY) — simplest
  • OAuth (Claude.ai subscription) — complex browser flow
  • AWS BedrockAWS_* env vars
  • Google Vertex AI — GCP credentials
  • Azure FoundryANTHROPIC_FOUNDRY_API_KEY

Task

Part A: Create .env file from the existing code

Search the codebase for all environment variables used. Key files to check:

  • src/entrypoints/cli.tsx (reads env vars at top level)
  • src/services/api/client.ts (API client construction)
  • src/utils/auth.ts (authentication)
  • src/utils/config.ts (config loading)
  • src/constants/ (any hardcoded config)
  • src/entrypoints/init.ts (initialization reads)

Create a .env.example file (or update the existing one if it exists) with ALL discoverable env vars, organized by category, with documentation comments. At minimum include:

# ─── Authentication ───
ANTHROPIC_API_KEY=           # Required: Your Anthropic API key (sk-ant-...)

# ─── API Configuration ───
ANTHROPIC_BASE_URL=          # Custom API endpoint (default: https://api.anthropic.com)
ANTHROPIC_MODEL=             # Override default model (e.g., claude-sonnet-4-20250514)
ANTHROPIC_SMALL_FAST_MODEL=  # Model for fast/cheap operations (e.g., claude-haiku)

# ─── Feature Flags (used by bun:bundle shim) ───
CLAUDE_CODE_PROACTIVE=false
CLAUDE_CODE_BRIDGE_MODE=false
CLAUDE_CODE_COORDINATOR_MODE=false
CLAUDE_CODE_VOICE_MODE=false

# ─── Debug ───
CLAUDE_CODE_DEBUG_LOG_LEVEL=  # debug, info, warn, error
DEBUG=false

Part B: Trace the API client setup

Read src/services/api/client.ts to understand how the Anthropic SDK is initialized. Document:

  1. What env vars it reads
  2. How it selects between API backends (direct, Bedrock, Vertex, etc.)
  3. Where the API key comes from (env var? keychain? OAuth token?)

Create a comment block at the top of .env.example explaining how auth works.

Part C: Create a minimal auth test

Create scripts/test-auth.ts:

// scripts/test-auth.ts
// Quick test that the API key is configured and can reach Anthropic
// Usage: bun scripts/test-auth.ts

import Anthropic from '@anthropic-ai/sdk'

const client = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY,
})

async function main() {
  try {
    const msg = await client.messages.create({
      model: process.env.ANTHROPIC_MODEL || 'claude-sonnet-4-20250514',
      max_tokens: 50,
      messages: [{ role: 'user', content: 'Say "hello" and nothing else.' }],
    })
    console.log('✅ API connection successful!')
    console.log('Response:', msg.content[0].type === 'text' ? msg.content[0].text : msg.content[0])
  } catch (err: any) {
    console.error('❌ API connection failed:', err.message)
    process.exit(1)
  }
}

main()

Part D: Stub OAuth for development

The OAuth flow (src/services/oauth/) requires browser interaction and Anthropic's OAuth endpoints. For development, we want to bypass it.

Search for where the auth decision is made (likely in src/utils/auth.ts or src/entrypoints/init.ts). Document what would need to be stubbed to skip OAuth and use only ANTHROPIC_API_KEY.

Don't modify source files yet — just document findings in a comment at the bottom of .env.example.

Verification

  1. .env.example exists with comprehensive env var documentation
  2. scripts/test-auth.ts exists
  3. With a valid ANTHROPIC_API_KEY set: bun scripts/test-auth.ts prints success
  4. Without an API key: bun scripts/test-auth.ts prints a clear error