# Five install routes, and the one carrying the npm badge is the deprecated one

> Claude Code is Anthropic's agentic coding tool for the terminal, delivered as a shell script, a Homebrew cask, a PowerShell script, a WinGet package, or a deprecated npm global. The repository is a thin front page over an external documentation site, so most of what a reader needs about configuration, data handling, and plugin behavior is not in the README at all.

**anthropics/claude-code** — Claude Code is an agentic coding tool that lives in your terminal, executing routine tasks, explaining complex code, and handling git workflows via natural language.

- Repository: https://github.com/anthropics/claude-code
- Website: https://code.claude.com/docs/en/overview
- Stars: 148,319 · Forks: 24,819
- Language: Python
- License: not declared
- Published: 2026-08-08 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/anthropics-claude-code

## The npm badge points at the route the README tells you not to use

The top of the repository carries an npm version badge for `@anthropic-ai/claude-code`, and then the install list marks that same route as deprecated. The five routes are laid out in one numbered list, and only the deprecated one has a language runtime attached to it:

```bash
npm install -g @anthropic-ai/claude-code
```

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

```bash
brew install --cask claude-code
```

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

```powershell
winget install Anthropic.ClaudeCode
```

The two marked recommended are the piped script for macOS and Linux and the piped PowerShell script for Windows. So the most prominent artifact on the page, the badge, advertises the one install method explicitly retired. Nothing stops you from running it, and the tooling is still published, but you are choosing a path the project has moved off, and a reader who copies only the badge and the surrounding line gets the deprecated route.

## The recommended installers pipe remote code straight into your shell

Both recommended commands fetch a script over the network and execute it in the same breath. `curl -fsSL https://claude.ai/install.sh | bash` and `irm https://claude.ai/install.ps1 | iex` differ only in which shell reads stdin. The `curl` flags do useful things, since `-f` makes an HTTP error fail the command and `-L` follows redirects, and neither flag lets you read the script before it runs.

What that costs you is reviewability. There is no version argument, no checksum, and no local copy to diff, so what executes is whatever the server returns at that moment, and you have no artifact afterwards describing what was run. That is a different trust model from the two package manager routes, where the install is resolved against a registry entry that names a version, and where the package is a thing you can list, hold, and remove.

The choice is not automatically wrong. The piped route is the one the project marks recommended for macOS, Linux, and Windows, and it is the shortest path from a bare machine to a working `claude` command. But a reader on a locked down machine, or one with a policy against executing remote content, has to notice that the recommended option is the one that conflicts with that policy.

## Uninstall steps are in the setup docs, not in the repository

The install list ends by pointing elsewhere for everything operational. For more installation options, uninstall steps, and troubleshooting, the reader is sent to the setup documentation. The same pattern holds for the rest of the tool: the official documentation at code.claude.com/docs/en/overview is where you learn more, and the repository is a pointer.

For a reader this has a concrete cost at the end of the life of an install. A package manager route gives you an uninstall for free, `brew uninstall --cask claude-code` and the equivalent WinGet removal are the ordinary way to reverse those two, but the piped script route has no documented local footprint in the repository. If you install that way, the removal procedure is a documentation lookup rather than a command you can infer, and any files the script placed in your home directory are not accounted for anywhere in this tree. The same gap applies to moving between install methods, which is precisely the situation the deprecation of the npm route creates.

## Launching means choosing a directory, and the directory is the scope

After installing, the entire getting started procedure is one step: navigate to your project directory and run `claude`. There is no global workspace, no project to register, and no configuration file to author before the first prompt. The tool is described as living in your terminal, understanding your codebase, and acting through natural language commands, covering routine task execution, explaining complex code, and handling git workflows.

The consequence is that scope comes from where you stand. Because the invocation is directory-scoped, the same binary started one directory up sees a different codebase, and a reader who expects a tool to know about their work without being told will get nothing until they launch it in the right place. That is also why the other two surfaces exist: it can be used in an IDE, or by tagging @claude on GitHub, which moves the boundary from your local checkout to a review context. Nothing in the repository explains how those three surfaces share or separate state, and that explanation is not in the README either.

## The collected signal is per code change accept or reject

The data section is specific about what is gathered. Usage data includes code acceptance or rejections, associated conversation data, and user feedback submitted through the `/bug` command. Read narrowly, that means the system records whether a proposed change was taken, alongside the conversation in which it was proposed.

The stated safeguards are limited retention periods for sensitive information, restricted access to user session data, and clear policies against using feedback for model training. The detail lives elsewhere: a data usage policies page, the Commercial Terms of Service, and the Privacy Policy. None of those are in this repository, so a reader deciding whether to run the tool over a private codebase has a summary here and the actual terms three links away.

One more detail worth knowing before you treat the repository as authoritative: it contains a LICENSE.md, and the repository metadata reports the license as unknown. Metadata that cannot name a license tells you nothing, and you have to read the file to know what you are agreeing to.

## Plugins ship in the tree, and the four example folders are the only map

The repository is not only a front page. It includes several Claude Code plugins that extend functionality with custom commands and agents, documented in the plugins directory README. Alongside that sit four example folders, examples/gateway/, examples/hooks/, examples/mdm/, and examples/settings/, plus the plugin manifest directory .claude-plugin/ and the .claude/ configuration directory.

The gap is that examples are not reference documentation. A folder named settings or hooks tells you the integration exists and roughly where it lands, but the behavior, the available keys, and the failure modes are not written out there, and the root README does not summarize them. So if you are deciding whether the hooks integration fits your workflow, the honest state is that the surface is visible and undocumented in place, and the search you need is a documentation search rather than a code read.

For contributors there is one other thing to notice: the tree carries both a capital Script/ directory and a lowercase scripts/, alongside mods/. Two similarly named directories is a small trap for anyone automating against paths, and nothing at the top level explains which is which.

## Three releases in five days, and no install command takes a version

The release cadence is visible and fast. Recent tags are v2.1.285 on 2026-09-29, v2.1.284 on 2026-09-28, and v2.1.283 on 2026-09-25, with the last push to the repository on 2026-09-26. CHANGELOG.md sits at the top level, along with feed.xml, which is a mechanism for watching releases without polling the repository.

None of the five install commands takes a version. `curl -fsSL ... | bash`, `brew install --cask claude-code`, `irm ... | iex`, and `winget install Anthropic.ClaudeCode` all resolve to whatever is current at the moment you run them, and the deprecated npm line has the same property. For the package manager routes you can pin afterwards, since the cask and the WinGet package name a version once installed. For the piped script route there is nothing to pin, because the script is not retained locally.

So the practical consequence is that your install is a point in time that you cannot name from the command you ran. If a behavior changes and you need to know which build you had, CHANGELOG.md and the version tags are the record to check, not your shell history.

## Conclusion

Claude Code fits a developer who wants an agent working inside a specific project directory and is comfortable with an installer that fetches and runs a remote script. Pick the Homebrew cask or the WinGet package over the piped script if you want a version, a registry, and an uninstall path, and read the data usage policies and Commercial Terms before you point it at proprietary code, because the collected signal includes code acceptance and rejection alongside conversation data. Verify the license yourself, since LICENSE.md is in the tree while repository metadata reports the license as unknown.

## FAQ

### how to install claude-code

On macOS and Linux the recommended route is curl -fsSL https://claude.ai/install.sh | bash, with brew install --cask claude-code as the package manager alternative. Installation via npm is deprecated, so npm install -g @anthropic-ai/claude-code is not the recommended path. More options, uninstall steps, and troubleshooting are in the setup documentation.

### how to install claude-code on windows

The recommended Windows route is irm https://claude.ai/install.ps1 | iex, and WinGet is offered as winget install Anthropic.ClaudeCode. After installing on any platform, navigate to your project directory and run claude.

### how to use claude code in terminal

Run claude from inside your project directory, since that is the whole getting started step. The tool is described as an agentic coding tool that lives in your terminal, understands your codebase, and executes routine tasks, explains complex code, and handles git workflows through natural language commands.

### how to use claude code in vscode

The repository states you can use Claude Code in your terminal, in an IDE, or by tagging @claude on GitHub, and it ships a .vscode/ directory and a .devcontainer/ directory in the tree. The specifics of the editor integration are not in the repository README, which points to the official documentation instead.

### how to use claude-code-setup plugin

The repository includes several Claude Code plugins that extend functionality with custom commands and agents, and the plugins directory README holds the detailed documentation for the available ones. The tree also ships example folders for gateway, hooks, mdm, and settings integrations.

## Sources

- [Official documentation](https://code.claude.com/docs/en/overview)
- [Official README](https://github.com/anthropics/claude-code#readme)
- [Project repository](https://github.com/anthropics/claude-code)
- [Release notes](https://github.com/anthropics/claude-code/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/anthropics-claude-code
