Claude Code Provider

The ai-sdk-provider-claude-code community provider allows you to access Claude models through the official Claude Agent SDK. It's particularly useful for developers who want to use their existing Claude Pro/Max subscription without managing API keys.

Version Compatibility

Provider VersionAI SDK VersionNPM TagStatus
3.xv6latestStable
2.xv5ai-sdk-v5Maintenance
0.xv4ai-sdk-v4Legacy
# AI SDK v6 (default)
npm install ai-sdk-provider-claude-code ai
# AI SDK v5
npm install ai-sdk-provider-claude-code@ai-sdk-v5 ai@^5.0.0
# AI SDK v4
npm install ai-sdk-provider-claude-code@ai-sdk-v4 ai@^4.0.0

Setup

pnpm add ai-sdk-provider-claude-code

Provider Instance

You can import the default provider instance claudeCode from ai-sdk-provider-claude-code:

import { claudeCode } from 'ai-sdk-provider-claude-code';

If you need a customized setup, you can import createClaudeCode and create a provider instance with your settings:

import { createClaudeCode } from 'ai-sdk-provider-claude-code';
const claudeCode = createClaudeCode({
allowedTools: ['Read', 'Write', 'Edit'],
disallowedTools: ['Bash'],
mcpServers: {
'my-server': {
command: 'node',
args: ['server.js'],
},
},
permissionMode: 'default',
});

You can use the following optional settings to customize the provider instance:

  • allowedTools string[] - List of allowed tools. When specified, only these tools will be available.
  • disallowedTools string[] - List of disallowed tools (e.g., ['Bash(rm:*)']).
  • mcpServers Record<string, McpServerConfig> - MCP server configurations.
  • permissionMode 'default' | 'acceptEdits' | 'bypassPermissions' | 'plan' - Tool permission handling.
  • maxTurns number - Maximum conversation turns.
  • cwd string - Working directory for CLI operations.
  • verbose boolean - Enable debug logging.

Language Models

You can create models that call Claude through the Claude Agent SDK using the provider instance:

const model = claudeCode('sonnet');

Supported model shortcuts:

  • opus: Claude Opus (most capable)
  • sonnet: Claude Sonnet (balanced)
  • haiku: Claude Haiku (fastest)

You can also use full model identifiers directly:

const model = claudeCode('claude-opus-4-5');
const model = claudeCode('claude-sonnet-4-5-20250514');

Example

import { claudeCode } from 'ai-sdk-provider-claude-code';
import { generateText } from 'ai';
const { text } = await generateText({
model: claudeCode('sonnet'),
prompt: 'Write a vegetarian lasagna recipe for 4 people.',
});

Model Capabilities

ModelImage InputObject GenerationTool UsageTool Streaming
opus
sonnet
haiku

Tool Usage and Tool Streaming show ❌ because this provider does not support AI SDK custom tools (Zod schemas passed to generateText/streamText). Instead, it uses Claude's built-in tools (Bash, Edit, Read, Write, etc.) and MCP servers which execute autonomously. Object generation uses native structured outputs with guaranteed schema compliance. Image input requires streaming mode and base64/data URL format only.

Authentication

The provider uses your existing Claude Pro or Max subscription through the Claude Code CLI:

claude login

This opens a browser window for authentication. Once authenticated, the provider will use your subscription automatically.

Requirements

  • Node.js 18 or higher
  • Claude Code CLI installed (npm install -g @anthropic-ai/claude-code)
  • Claude Pro or Max subscription

For more details, see the provider documentation.