Skip to main content

llm-claude-cli

PyPI License

LLM plugin for using Claude models through the Claude Code CLI.

This plugin allows you to use Claude models via the claude command-line tool, leveraging your existing Claude Code subscription without requiring a separate API key.

Installation

First, ensure you have Claude Code CLI installed and authenticated:

npm install -g @anthropic-ai/claude-code
claude auth login

Then install this plugin:

llm install llm-claude-cli

Or install from source:

pip install -e .

Usage

Basic usage

# Use the default Claude CLI model
llm -m claude-cli "What is the capital of France?"

# Use specific model variants
llm -m claude-cli-opus "Explain quantum computing"
llm -m claude-cli-sonnet "Write a haiku about programming"
llm -m claude-cli-haiku "Quick summary of Python decorators"

Available models

Model ID Aliases Description
claude-cli ccli Default Claude CLI model
claude-cli-opus ccli-opus Claude Opus 4.5
claude-cli-sonnet ccli-sonnet Claude Sonnet 4.5
claude-cli-haiku ccli-haiku Claude Haiku 4.5

Using aliases

llm -m ccli "Hello, Claude!"
llm -m ccli-opus "Deep analysis of this code"
llm -m ccli-sonnet "Explain this concept"
llm -m ccli-haiku "Quick answer"

Options

# Set timeout (in seconds, default 300)
llm -m claude-cli "Complex task" -o timeout 600

# Limit allowed tools
llm -m claude-cli "Read file.txt" -o allowedTools "Read,Glob"

# Block specific tools
llm -m claude-cli "Help me code" -o disallowedTools "Bash(rm:*),Bash(sudo:*)"

# Add additional directory for Claude to access
llm -m claude-cli "Review the frontend" -o add_dir "../frontend"

# Set working directory
llm -m claude-cli "Run the tests" -o cwd "/path/to/project"

# Set permission mode (default, acceptEdits, bypassPermissions)
llm -m claude-cli "Refactor this" -o permission_mode "acceptEdits"

# Use custom MCP configuration
llm -m claude-cli "Use my tools" -o mcp_config "/path/to/mcp.json"

# Enable verbose logging
llm -m claude-cli "Debug this" -o verbose true

System Prompts

The plugin auto-detects when to use Claude Code's default agentic system prompt:

  • Simple queries (no agentic options, no schema): Uses an empty system prompt for direct responses
  • Agentic queries (tools, permissions, schema, etc.): Uses Claude Code's default system prompt

You can customize this behavior:

# Simple query - uses empty system prompt by default
llm -m claude-cli "What is the capital of France?"

# Custom system prompt (replaces the default)
llm -m claude-cli "Hello" --system "You are a pirate"

# Append to Claude Code's default system prompt instead of replacing
# This preserves agentic capabilities while adding your instructions
llm -m claude-cli "Analyze this code" --system "Focus on security" -o append_system_prompt true

# Explicitly control whether to use Claude Code's default system prompt
llm -m claude-cli "Help me code" -o use_default_system_prompt true

Conversations

Use LLM's conversation features for multi-turn interactions:

# Start a conversation (gets assigned an ID automatically)
llm -m claude-cli "My name is Alice"

# Continue the most recent conversation
llm -m claude-cli "What's my name?" -c

# View conversation history and IDs
llm logs list

# Continue a specific conversation by ID
llm -m claude-cli "Tell me more" --cid 01abc123...

The plugin generates a deterministic Claude session ID from the LLM conversation ID, so continuing a conversation automatically resumes the corresponding Claude session. For one-off prompts (without -c or --cid), the plugin passes --no-session-persistence to Claude to avoid creating orphan sessions.

Streaming

Streaming is enabled by default. The plugin uses Claude Code's stream-json output format for real-time token streaming.

# Streaming output (default)
llm -m claude-cli "Tell me a story"

# Disable streaming
llm -m claude-cli "Quick answer" --no-stream

Schemas (Structured Output)

This plugin supports LLM's schema feature for structured JSON output. Use the --schema flag to specify the expected output format:

# Simple schema with field types
llm -m claude-cli "Invent a cool dog" --schema 'name, age int, breed'

# Complex schema
llm -m claude-cli "List 3 countries" --schema '
  countries: [{
    name,
    capital,
    population int
  }]
'

# Using a JSON schema file
llm -m claude-cli "Extract info" --schema-file schema.json

The plugin uses Claude Code's --json-schema flag to ensure structured output conformance.

Python API

import llm

# Get a model
model = llm.get_model("claude-cli")

# Basic prompt
response = model.prompt("What is Python?")
print(response.text())

# With system prompt
response = model.prompt("Explain decorators", system="You are a Python expert")
print(response.text())

# Streaming
for chunk in model.prompt("Tell me a story", stream=True):
    print(chunk, end="", flush=True)

# Conversation
conversation = model.conversation()
response1 = conversation.prompt("My name is Alice")
response2 = conversation.prompt("What's my name?")
print(response2.text())  # Should mention Alice

# Schema for structured output
import json

schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "age": {"type": "integer"},
        "breed": {"type": "string"}
    },
    "required": ["name", "age", "breed"]
}

response = model.prompt("Invent a cool dog", schema=schema)
dog = json.loads(response.text())
print(f"Name: {dog['name']}, Age: {dog['age']}, Breed: {dog['breed']}")

How it works

This plugin invokes the Claude Code CLI (claude) as a subprocess with the -p flag for non-interactive prompts. It supports:

  • Streaming: Uses --output-format stream-json for real-time NDJSON streaming
  • Non-streaming: Uses --output-format json for complete responses
  • Schemas: Uses --json-schema for structured JSON output conformance
  • System prompts: Auto-detects when to use Claude Code's default; supports --system-prompt (replace) or --append-system-prompt
  • Conversations: Integrates with LLM's -c/--cid flags; uses --no-session-persistence for one-off prompts
  • Model selection: Passes --model flag to select Opus, Sonnet, or Haiku
  • Directory access: Uses --add-dir for multi-directory projects
  • Permission control: Uses --permission-mode and tool filtering
  • MCP integration: Uses --mcp-config for custom tool servers

Requirements

License

MIT License - see LICENSE for details.

Metadata

Release files for llm-claude-cli 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for llm-claude-cli 0.1.3
File Size Uploaded Provenance Actions
llm_claude_cli-0.1.3.tar.gz 14.8 kB With provenance Details for llm_claude_cli-0.1.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for llm-claude-cli 0.1.3
File Interpreter ABI Platform Actions
llm_claude_cli-0.1.3-py3-none-any.whl Python 3 none any Details for llm_claude_cli-0.1.3-py3-none-any.whl

Total release size: 24.2 kB

Release files / llm_claude_cli-0.1.3.tar.gz

Download URL llm_claude_cli-0.1.3.tar.gz
Size 14.8 kB
Tags Source
SHA-256 checksum
How to use checksums
72b86d6ced714d663704246b22ae89f1b55eef7da919490066d0f63e0fa40791
BLAKE2b-256 checksum
How to use checksums
6890392ed1ee834eeb20fb2c7324a94284d860aef7c24a1568d214ee0e5f98d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 11, 2026.

Transparency log

Release files / llm_claude_cli-0.1.3-py3-none-any.whl

Download URL llm_claude_cli-0.1.3-py3-none-any.whl
Size 9.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
12f7edb65f66bfccbff6debf8ffd16e3522d790ae9c211b88c5a70bd65d161f6
BLAKE2b-256 checksum
How to use checksums
d57c624518228152ce976725f6925583d586f9133dfc2caff00040738b97c176
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 11, 2026.

Transparency log

Security for llm-claude-cli 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for llm_claude_cli-0.1.3.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 11, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page