@tfw.in/claude-oauth
v0.1.5
Published
Use Claude Max/Pro subscription via OAuth - no API keys needed
Maintainers
Readme
claude-oauth
Use your Claude Max or Claude Pro subscription via OAuth to access the Claude API - no API keys needed!
Installation
npm install @tfw.in/claude-oauthQuick Start
# Login (one-time)
npx @tfw.in/claude-oauth --login
# Chat directly
npx @tfw.in/claude-oauth "What is the meaning of life?"Usage
Standalone CLI
# Simple prompt
npx @tfw.in/claude-oauth "Explain quantum computing in one sentence"
# Login/re-authenticate
npx @tfw.in/claude-oauth --login
# Help
npx @tfw.in/claude-oauth --helpOpenAI SDK
import OpenAI from 'openai';
import { createOAuthFetch } from '@tfw.in/claude-oauth';
const client = new OpenAI({
baseURL: 'https://api.anthropic.com/v1/',
apiKey: 'oauth', // Placeholder
fetch: createOAuthFetch(),
});
const response = await client.chat.completions.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 100,
messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(response.choices[0].message.content);Anthropic SDK
import Anthropic from '@anthropic-ai/sdk';
import { createOAuthFetch } from '@tfw.in/claude-oauth';
const client = new Anthropic({
apiKey: 'oauth-placeholder',
fetch: createOAuthFetch(),
});
const response = await client.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 100,
messages: [{ role: 'user', content: 'Hello!' }],
});
console.log(response.content[0].text);Programmatic Usage
import { chat, login } from '@tfw.in/claude-oauth';
// Login programmatically
await login();
// Simple chat
const response = await chat("What is 2+2?");
console.log(response.content[0].text);
// With options
const response = await chat("Hello", {
model: 'claude-sonnet-4-20250514',
maxTokens: 1000,
system: 'You are a helpful assistant',
});How It Works
This package uses Anthropic's OAuth flow (the same one Claude Code uses) to authenticate your Claude Max/Pro subscription. Key requirements handled automatically:
- Required Beta Headers - OAuth-specific headers are injected
- System Prompt Validation - OAuth tokens require a specific system prompt prefix
Token Storage
Tokens are stored at ~/.claude-oauth/auth.json by default.
Override with environment variable:
export CLAUDE_AUTH_FILE=/custom/path/auth.jsonOr use direct tokens:
export ACCESS_TOKEN=sk-ant-oat01-...
export REFRESH_TOKEN=...API
createOAuthFetch(originalFetch?)
Creates a fetch function that handles OAuth authentication. Use this to patch any SDK.
chat(prompt, options?)
Simple chat function. Options: model, maxTokens, system.
login()
Interactive OAuth login flow.
CONFIG
Configuration object with OAuth endpoints and settings.
License
MIT
