To install Claude Code on macOS or Linux, run curl -fsSL https://claude.ai/install.sh | bash in your terminal. On Windows PowerShell, run irm https://claude.ai/install.ps1 | iex. Then run claude to log in. That gets you a working install. It does not get you a useful one. The post-install setup, CLAUDE.md, settings.json, skills, and MCP servers, is what separates a toy from a production tool. At Formaum, I install Claude Code most weeks across new client environments . These are the steps I actually run.

I install Claude Code on a new machine or in a new client environment most weeks. The official install is honestly fine. What I see people miss is everything that happens after, the configuration that turns Claude Code from a chat window into the thing that actually runs my business. Here is the full walkthrough.

Prerequisites

You need three things before you run the install command.

  1. A terminal. Terminal.app on Mac, any modern shell on Linux, PowerShell on Windows. If you are on native Windows, install Git for Windows first so Claude Code can use a real Bash shell. Without it you are stuck with PowerShell as the shell tool and a lot of cross-platform scripts will break.
  2. A Claude account. Either a Claude Pro, Max, Team, or Enterprise subscription, or an Anthropic Console account with credits. I use Max for daily work. Console is fine if you want strict per-token cost tracking.
  3. Node.js 18 or newer. Only required if you go the npm route. The native installer does not need Node at all, which is one reason I always recommend it.

The install command

Anthropic now ships native installers as the recommended path. They auto-update in the background, which means you stop thinking about version drift.

macOS, Linux, or WSL:

curl -fsSL https://claude.ai/install.sh | bash

Windows PowerShell:

irm https://claude.ai/install.ps1 | iex

macOS via Homebrew (if you prefer brew):

brew install --cask claude-code

Note that the Homebrew cask does not auto-update. You will need to run brew upgrade claude-code periodically. That is the only reason I do not use it.

After install, log in:

claude

It will open a browser, you authenticate, and your credentials get stored on the machine. You do not log in again unless you switch accounts.

First-run setup that nobody talks about

This is where most guides stop. It is also where the actual value lives. Claude Code reads four things on startup that almost no tutorial mentions: global CLAUDE.md, project CLAUDE.md, settings.json, and the skills folder. Get these right once and every session afterward inherits your standards.

1. Global CLAUDE.md

This file lives at ~/.claude/CLAUDE.md and it loads on every session, every project. Treat it as your operating instructions. Mine has voice rules, pricing floors, banned phrases, and a list of behaviors I never want to repeat. The point is to write down the corrections you keep having to make, so you only make them once.

Create it:

mkdir -p ~/.claude && touch ~/.claude/CLAUDE.md

Then add three sections to start: who you are, what you are working on, and what you never want Claude to do. Keep it short. You can grow it as you find patterns worth locking down.

2. Project CLAUDE.md

Drop a CLAUDE.md at the root of any project you want Claude Code to understand. Stack, deploy commands, conventions, gotchas. This one is checked into the repo, so the whole team benefits. I write it the first time I open the project and update it whenever I catch myself explaining the same thing twice.

3. Settings.json

At ~/.claude/settings.json you can configure permissions, environment variables, and hooks. Hooks are the underrated part. They let you run a shell command on specific events, like auto-committing on stop, or running a linter after every edit. If you want automated behavior, settings.json is where it lives. Memory and preferences cannot do that.

Minimal starter:

{
  "permissions": {
    "allow": ["Bash(git status)", "Bash(ls)", "Bash(npm test)"]
  }
}

Every time you approve a bash command, ask whether it belongs in the allowlist. After two weeks of use you will have a settings.json that almost never prompts you for permission on routine commands.

4. Skills folder

Skills live at ~/.claude/skills/ and they are the most powerful feature most users never touch. A skill is a folder with a SKILL.md describing when to use it and what to do. Claude Code auto-discovers them and loads them on trigger phrases. I have skills for proposals, cover letters, audits, client onboarding, inbox cleaning, and about thirty others. Each one collapses a multi-step process into one command.

Start with one. Pick a workflow you do every week. Make a folder, write a SKILL.md with a description and steps, and try it. The trigger is the description field, so be specific about when Claude should invoke it.

Verifying the install works

Two commands. First:

claude --version

You should see a version number. If you get "command not found", your PATH is not set, jump to the errors section below.

Second:

claude doctor

This runs a diagnostic and tells you what is misconfigured. Run it after every fresh install. It catches credential issues, MCP server failures, and shell setup problems before they bite you mid-task.

Common install errors and what they mean

Four errors cover ninety percent of what I see.

command not found: claude. The binary installed but your shell does not know where it is. On macOS or Linux, add export PATH="$HOME/.local/bin:$PATH" to your ~/.zshrc or ~/.bashrc, then run source ~/.zshrc. On Windows, the installer should handle PATH, but if not, search Environment Variables and add the install directory manually.

EACCES permission denied. Only happens with npm installs. You tried to install globally and npm wanted sudo. Do not use sudo with npm. Configure a user-level npm directory or, easier, switch to the native installer.

EBADPLATFORM. npm thinks your platform is unsupported. This is almost always a stale npm cache or an architecture mismatch. The fix is to abandon npm and use the native installer.

Authentication keeps failing. Usually means your browser session is logged into a different Anthropic account than the one you want to use. Log out of claude.ai in the browser, then run claude again and log in fresh. If you are on a Console account, double-check that you have credits or a billing source attached.

Updating Claude Code

Native installs auto-update in the background. You do not have to do anything. Homebrew and WinGet installs do not, so you need to run brew upgrade claude-code or winget upgrade Anthropic.ClaudeCode manually. I cover the full update flow, version rollback, and what to do when an update breaks your workflow in a separate post on updating Claude Code.

Setting up MCP servers post-install

MCP, Model Context Protocol, is how Claude Code talks to external tools. Without MCP, Claude Code is a coding assistant. With MCP, it is an operations engineer. I run servers for Trigger.dev, Airtable, Gmail, Calendar, Slack, ClickUp, and several others. Each one extends what Claude can do without leaving the terminal.

Install a server globally so it works across every project:

claude mcp add --scope user my-server npx -- some-mcp-package

Check what is wired up:

claude mcp list

My rule on MCP servers: install only what you use weekly. Each one adds startup cost and context overhead. Start with one, prove it earns its place, then add the next. The Anthropic docs at code.claude.com have the full list of official servers, and most major SaaS tools now publish their own.

What good looks like after install

You should be able to open a terminal in any project, type claude, and have your voice rules, permission allowlist, skills, and MCP servers all load automatically. No re-explaining yourself. No re-approving the same bash commands. No copy-pasting context from previous sessions. The install is the first ten percent. The configuration is the rest.

If you got Claude Code installed and you are not sure what to configure first, start with global CLAUDE.md. One file, write down the three things you keep correcting. Everything else compounds from there.

Run on a stack that's holding you back?

Book a 45-minute discovery call. I'll map what moves, what stays, and what makes sense for your operation.

Book a call

Frequently Asked Questions

Do I need Node.js to install Claude Code?
Only if you install via npm. The native installer for macOS, Linux, and Windows does not require Node.js at all. I recommend the native installer for that reason, plus it auto-updates in the background.
Can I install Claude Code on Windows without WSL?
Yes. The PowerShell installer (irm https://claude.ai/install.ps1 | iex) works on native Windows. Install Git for Windows first so Claude Code has access to a real Bash shell, otherwise it falls back to PowerShell as the shell tool and a lot of standard scripts will not run correctly.
Where is the CLAUDE.md file located and what should go in it?
Global CLAUDE.md lives at ~/.claude/CLAUDE.md and loads on every session. Project CLAUDE.md sits at the root of a given repo. Put your voice rules, conventions, banned phrases, stack details, and any correction you find yourself repeating. The point is to write down corrections once instead of giving them every session.
What is the difference between settings.json and CLAUDE.md?
CLAUDE.md is instructions Claude reads in context. settings.json is harness configuration the runtime executes, things like permission allowlists, environment variables, and hooks. If you want automated behavior on specific events (auto-commit, run a linter after edits), it has to go in settings.json. Memory and CLAUDE.md cannot trigger actions on their own.
How do I install MCP servers after Claude Code is set up?
Run claude mcp add --scope user [name] [command]. The --scope user flag makes it available across every project. Run claude mcp list to verify the server is connected. Start with one server you will use weekly, confirm it works, then add the next. Each server adds startup cost so do not install ones you will not use.
Genevieve Claire
Genevieve Claire
Founder, Formaum — Claude Code Expert & Full-Stack AI Engineer

Builds bespoke AI automation systems for multi-location operations. Previously EA Sports FIFA ($7B franchise) and Film/TV VFX on Skyfall, Avengers, Game of Thrones. Based in Vancouver, BC.