Claude Code is Anthropic’s official CLI tool for working with Claude directly in your terminal. Unlike IDE-based assistants that offer autocomplete and chat panels, Claude Code takes an agentic approach — it reads your codebase, executes commands, runs tests, and makes changes across multiple files autonomously.
This guide walks you through everything from installation to advanced configuration. By the end, you’ll have a fully customized Claude Code setup tailored to your projects and workflow.
What Is Claude Code and Why Use It
Claude Code is a terminal-based AI coding assistant that operates as an autonomous agent within your development environment. You give it a task — fix a bug, add a feature, refactor a module — and it figures out how to accomplish it by reading files, understanding your project structure, making changes, and verifying its work.
What makes it different from tools like GitHub Copilot or Cursor:
- Editor-agnostic. Claude Code runs in your terminal, so it works with VS Code, Neovim, Emacs, JetBrains, or any editor you prefer. Your IDE choice is completely independent.
- Agentic execution. It doesn’t just suggest code — it reads files, writes changes, runs commands, and iterates based on results. You describe the outcome, not the steps.
- Deep context. With a 200K token context window and intelligent file selection, Claude Code understands large codebases in ways that inline autocomplete tools can’t match.
- Project memory. Through CLAUDE.md configuration files, Claude Code remembers your project’s conventions, architecture decisions, and constraints across sessions.
If you’ve been using Copilot or Cursor and want to understand how Claude Code compares, our Claude Code vs Cursor comparison covers the tradeoffs in detail.
Prerequisites
Before installing Claude Code, make sure you have the following:
- Node.js 18 or higher. Claude Code is distributed via npm. Check your version with
node --version. - npm (comes with Node.js). Any recent version works.
- An Anthropic account. You need either a Claude Pro/Team subscription ($20-30/month) or an Anthropic API key with credits.
- A terminal. macOS Terminal, iTerm2, Windows Terminal, or any Linux terminal. Claude Code works on macOS, Linux, and Windows (via WSL).
- Git (recommended). Claude Code integrates with git for tracking changes, creating commits, and managing branches.
Check your prerequisites:
# Verify Node.js version (need 18+)
node --version
# Verify npm is available
npm --version
# Verify git is installed
git --version
If you need to install Node.js, the easiest approach is via nvm (Node Version Manager):
# Install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
# Install latest LTS Node.js
nvm install --lts
# Verify installation
node --version
Installation Step-by-Step
Step 1: Install Claude Code globally
npm install -g @anthropic-ai/claude-code
This installs the claude command globally. Verify it worked:
claude --version
Step 2: Authenticate
Run the login command to connect Claude Code to your Anthropic account:
claude login
This opens a browser window for OAuth authentication. Sign in with your Anthropic account, authorize Claude Code, and you’ll be redirected back to the terminal. The authentication token is stored securely in your home directory.
If you prefer to use an API key directly:
# Set your API key as an environment variable
export ANTHROPIC_API_KEY="sk-ant-your-key-here"
# Or add it to your shell profile for persistence
echo 'export ANTHROPIC_API_KEY="sk-ant-your-key-here"' >> ~/.bashrc
source ~/.bashrc
Step 3: First run and project initialization
Navigate to your project directory and launch Claude Code:
cd /path/to/your/project
claude
On first launch, Claude Code will:
- Scan your project structure to understand the codebase layout
- Identify key files (package.json, Cargo.toml, go.mod, etc.) to determine the tech stack
- Present an interactive prompt where you can start giving it tasks
Try a simple first command to verify everything works:
# Inside the Claude Code prompt
> Explain the structure of this project and its main entry points
Claude Code will read your files, analyze the project, and give you a detailed breakdown. If this works, you’re ready to configure it for your specific workflow.
Configuration Deep-Dive
CLAUDE.md — Project Instructions
The most powerful configuration mechanism in Claude Code is the CLAUDE.md file. Place it in your project root, and Claude Code reads it at the start of every session. Think of it as a briefing document that gives Claude essential context about your project.
A well-written CLAUDE.md dramatically improves output quality. Here’s a practical template:
# Create CLAUDE.md in your project root
cat > CLAUDE.md << 'EOF'
# Project: Your Project Name
## Tech Stack
- Backend: Node.js + Express + TypeScript
- Database: PostgreSQL with Prisma ORM
- Frontend: React 19 + Tailwind CSS
- Testing: Vitest + Playwright
## Architecture
- Monorepo with /packages/api, /packages/web, /packages/shared
- REST API with OpenAPI spec in /docs/openapi.yaml
- Event-driven architecture using Redis pub/sub
## Conventions
- All API responses follow the format: { data, error, meta }
- Use Zod schemas for all input validation
- Database migrations in /packages/api/prisma/migrations
- Never use `any` type in TypeScript
## Commands
- `npm run dev` — start all services
- `npm run test` — run all tests
- `npm run lint` — ESLint + Prettier check
- `npm run build` — production build
## Important Notes
- Environment variables in .env.local (never commit)
- Database connection string uses connection pooling via PgBouncer
- All dates stored as UTC in the database
EOF
You can also create a global CLAUDE.md at ~/.claude/CLAUDE.md for instructions that apply across all projects (like personal coding preferences or team standards).
Settings.json — Runtime Configuration
Claude Code's settings file lives at ~/.claude/settings.json. Key options include:
{
"permissions": {
"allow": [
"Read",
"Write",
"Bash(npm run test)",
"Bash(npm run lint)"
],
"deny": [
"Bash(rm -rf /)",
"Bash(git push --force)"
]
},
"env": {
"NODE_ENV": "development"
}
}
The permissions system is important. By default, Claude Code asks permission before executing potentially destructive commands. You can pre-approve safe commands (like running tests) and explicitly block dangerous ones.
Custom Hooks
Hooks let you run scripts automatically at specific points in Claude Code's workflow. This is where Claude Code's power really shines for teams:
# Example: Auto-lint after every file save
# In settings.json:
{
"hooks": {
"postSave": {
"command": "npx eslint --fix $FILE",
"description": "Auto-fix lint issues on save"
},
"preCommit": {
"command": "npm run test -- --bail",
"description": "Run tests before committing"
}
}
}
Common hook patterns:
- Auto-lint: Run ESLint/Prettier/Ruff after file modifications
- Test on save: Run related tests when files change
- Security scan: Check for secrets or vulnerabilities before commits
- Type checking: Run tsc/mypy after TypeScript/Python changes
MCP Server Connections
The Model Context Protocol (MCP) extends Claude Code's capabilities by connecting it to external tools and data sources. Configure MCP servers in .mcp.json at your project root:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://user:pass@localhost:5432/mydb"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/docs"]
}
}
}
With MCP, Claude Code can query your database directly, read documentation, interact with APIs, and access tools that go beyond file system operations.
Essential Commands and Shortcuts
Once you're inside a Claude Code session, these commands will be part of your daily workflow:
| Command | Purpose | Example |
|---|---|---|
/help |
Show available commands | /help |
/clear |
Clear conversation context | /clear |
/compact |
Compress context to free up token space | /compact |
/cost |
Show current session token usage and cost | /cost |
/model |
Switch between Claude models | /model claude-sonnet-4-20250514 |
/vim |
Toggle vim keybindings for input | /vim |
Ctrl+C |
Cancel current operation | Press during execution |
Ctrl+D |
Exit Claude Code | Press at empty prompt |
You can also run Claude Code in non-interactive mode for scripted workflows:
# Run a single task and exit
claude -p "Add input validation to the /api/users endpoint"
# Pipe input for processing
cat error.log | claude -p "Explain these errors and suggest fixes"
# Use in CI/CD pipelines
claude -p "Review the changes in the last commit for security issues" --output-format json
Workflow Examples
Bug Fixing Workflow
This is where Claude Code truly excels. Instead of manually tracing through code, you point Claude Code at the problem and let it investigate:
# Start Claude Code in your project
claude
# Describe the bug
> Users report that the password reset email contains an expired link.
> The reset token should be valid for 24 hours but seems to expire immediately.
> Investigate and fix this.
Claude Code will typically:
- Search for password reset-related code across your project
- Read the token generation logic and find the expiration calculation
- Identify the bug (a common one: using seconds instead of milliseconds, or UTC vs local time)
- Fix the code and add a test to prevent regression
- Show you exactly what changed with file diffs
Feature Development Workflow
> Add a rate limiting middleware to the API.
> Requirements:
> - 100 requests per minute per IP for unauthenticated users
> - 1000 requests per minute per API key for authenticated users
> - Use Redis for distributed rate limiting (we already have a Redis connection)
> - Return standard 429 responses with Retry-After header
> - Add tests for all scenarios
Claude Code excels here because it understands your existing middleware stack, Redis configuration, and testing patterns from your codebase context. The implementation will match your project's conventions rather than producing generic boilerplate.
Code Review Workflow
# Review the latest changes
> Review the changes in the last 3 commits.
> Focus on security issues, performance problems, and deviations from
> our project conventions. Be specific and actionable.
For a comprehensive look at AI-powered code reviews, see our guide on AI code review tools that actually work.
Refactoring Workflow
> The UserService class has grown to 800 lines and violates single responsibility.
> Refactor it into focused services: AuthService, ProfileService, and NotificationService.
> Maintain all existing tests and update imports across the codebase.
> Run tests after each step to ensure nothing breaks.
This is the type of task where Claude Code's agentic nature provides the biggest advantage over autocomplete tools. It can plan the refactoring, execute changes across dozens of files, run tests to verify each step, and fix any issues that arise — all without you manually guiding each change.
Advanced Setup
Custom Agents
Claude Code supports custom agent definitions that specialize its behavior for specific tasks. Create agent files in .claude/agents/:
# .claude/agents/security-audit.md
You are a security-focused code reviewer. When analyzing code:
1. Check for SQL injection, XSS, CSRF, and SSRF vulnerabilities
2. Verify authentication and authorization on every endpoint
3. Look for hardcoded secrets, weak cryptography, and insecure defaults
4. Check dependency versions against known CVE databases
5. Rate each finding as Critical, High, Medium, or Low severity
Output findings in a structured format with file, line, severity, and remediation.
Run a custom agent with:
claude -a security-audit
Team Mode
For teams, Claude Code supports shared configurations that ensure consistent behavior across developers:
- Commit
CLAUDE.mdto your repository so all team members share the same project context - Share
.mcp.jsonfor consistent MCP server access across the team - Use a shared
.claude/settings.jsonin the repo for team-wide permission defaults - Create custom agents in
.claude/agents/for team-specific workflows
CI/CD Integration
Claude Code can be integrated into your CI/CD pipeline for automated code review, test generation, and documentation updates:
# In your GitHub Actions workflow
- name: AI Code Review
run: |
npx @anthropic-ai/claude-code -p "Review the changes in this PR for:
1. Security vulnerabilities
2. Performance regressions
3. Missing test coverage
4. Documentation gaps
Output as a markdown checklist." --output-format text > review.md
- name: Post Review Comment
uses: actions/github-script@v7
with:
script: |
const review = require('fs').readFileSync('review.md', 'utf8');
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: review
});
Memory and Context Management
For long sessions or large projects, context management becomes important:
- Use
/compactregularly. When working on a long task, compact your context periodically to free up token space. Claude Code summarizes the conversation while preserving important context. - Write session state files. For tasks that span multiple sessions, instruct Claude Code to write a state file before ending the session, then read it at the start of the next one.
- Use specific file references. Instead of asking Claude Code to "look at the auth code," tell it to "read src/auth/middleware.ts." Specific references use fewer tokens and get faster, more accurate results.
- Split large tasks. Rather than asking Claude Code to refactor your entire application at once, break it into focused tasks: "Refactor the authentication module" then "Refactor the payment module."
Troubleshooting Common Issues
Authentication Failures
If claude login fails or you get authentication errors:
# Clear stored credentials and re-authenticate
rm -rf ~/.claude/auth
claude login
# If using API key, verify it's set correctly
echo $ANTHROPIC_API_KEY | head -c 10
# Should show: sk-ant-xxx
# Check for proxy or firewall issues
curl -s https://api.anthropic.com/v1/messages -H "x-api-key: $ANTHROPIC_API_KEY" -H "content-type: application/json" -H "anthropic-version: 2023-06-01" -d '{"model":"claude-sonnet-4-20250514","max_tokens":10,"messages":[{"role":"user","content":"hi"}]}'
Context Limits
If Claude Code tells you the context is too large or starts forgetting earlier parts of the conversation:
- Run
/compactto compress the conversation - Start a new session with
/clearif the task has changed - Be more specific in your file references — don't let Claude Code read files it doesn't need
- Break large tasks into smaller, focused steps
Slow Responses
Typically caused by large context or complex tasks:
- Check your internet connection and API status at status.anthropic.com
- Use
/compactto reduce context size - Switch to a faster model with
/modelfor simpler tasks - Ensure your CLAUDE.md isn't excessively long — keep it under 500 lines
Permission Errors
If Claude Code can't read or write files:
# Check file permissions
ls -la /path/to/file
# Ensure Claude Code has read access to the project
# If using Docker or restricted environments, check mount points
# Review permission settings in ~/.claude/settings.json
npm Installation Issues
# If global install fails with permission errors
sudo npm install -g @anthropic-ai/claude-code
# Or use npx to run without global install
npx @anthropic-ai/claude-code
# If you get EACCES errors, fix npm permissions
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
npm install -g @anthropic-ai/claude-code
Frequently Asked Questions
How much does Claude Code cost?
Claude Code requires either a Claude Pro subscription ($20/month) or Claude Team subscription ($30/month/user). Alternatively, you can use it with an Anthropic API key, where you pay per token — approximately $3 per million input tokens and $15 per million output tokens for Claude Sonnet. A typical coding session uses $0.50-$3.00 in API costs, depending on project size and task complexity. For most developers, the Pro subscription is more predictable and usually cheaper than API usage.
Does Claude Code work with any editor?
Yes. Claude Code runs in your terminal, completely independent of your editor. You can use VS Code, Neovim, Emacs, Sublime Text, IntelliJ, or even a plain text editor. Claude Code reads and writes files directly on disk, so your editor picks up changes through its normal file-watching mechanism. This is a fundamental design difference from tools like Cursor or Copilot that are tied to specific editors.
How does Claude Code compare to Cursor?
They're complementary tools with different strengths. Cursor provides a polished AI-native IDE experience with excellent multi-file editing via Composer. Claude Code provides an agentic CLI experience that excels at complex, autonomous tasks. Cursor is better for interactive, visual development. Claude Code is better for large-scale refactoring, debugging, and tasks that require running commands. Many developers use both. See our detailed Claude Code vs Cursor comparison for the full analysis.
How do I keep my API key secure?
Several best practices:
- Never commit API keys to git — use environment variables or a secrets manager
- Add
.envand credential files to your.gitignore - Use the
claude loginOAuth flow instead of raw API keys when possible — tokens are stored securely and rotated automatically - If using API keys, store them in your shell profile (
~/.bashrcor~/.zshrc) with restricted file permissions:chmod 600 ~/.bashrc - For teams, use Anthropic's organizational API key management with per-user keys and usage limits
Can I use Claude Code offline?
No. Claude Code requires an internet connection to communicate with Anthropic's API. The AI models run on Anthropic's servers, not locally. If you need offline AI coding assistance, consider open-source tools like Aider paired with local models (Llama, DeepSeek) running via Ollama. However, the quality gap between local models and Claude for complex coding tasks remains significant.
Claude Code excels at managing cloud infrastructure. Pair it with DigitalOcean droplets for dev environments or Kinsta for WordPress deployments.
Next Steps and Resources
Now that you have Claude Code set up and configured, here's how to get the most out of it:
- Start with a real task. Don't practice on toy examples — use Claude Code on actual work from day one. The learning curve is gentlest when you have real context and motivation.
- Iterate on your CLAUDE.md. Your project instructions will evolve as you discover what context Claude Code needs. Update it weekly for the first month.
- Learn the permission system. Pre-approve commands you use frequently (test runners, linters) to reduce friction. Block commands that could cause damage.
- Combine with other tools. Claude Code works well alongside Copilot for autocomplete, Cursor for visual editing, and traditional tools for specific tasks. It's not either-or.
- Review AI-generated code carefully. Claude Code is remarkably capable, but it's not infallible. Treat its output like a pull request from a skilled but unfamiliar colleague — review it with healthy skepticism.
For more on the AI coding tool landscape and how Claude Code fits in, explore our Best AI Coding Tools for 2026 guide and our comparison of AI code review tools.