npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ccperm

v1.15.1

Published

Audit Claude Code permissions across all your projects

Readme

ccperm

Audit Claude Code permissions across all your projects.

한국어

Claude Code stores allowed permissions (Bash commands, WebFetch domains, MCP tools, etc.) in .claude/settings*.json per project. As you work across many projects, these permissions pile up silently. ccperm scans your home directory, finds every settings file, and shows what you've allowed — in an interactive TUI or static text output.

Quick Start

npx ccperm

No install needed. Or install globally:

npm i -g ccperm
ccperm

By default, ccperm scans all projects under ~ and launches an interactive TUI.

Options

| Flag | Description | |------|-------------| | --cwd | Scan current directory only (default: all projects under ~) | | --static | Force text output (default when piped / non-TTY) | | --verbose | Detailed static output with all permissions listed | | --fix | Auto-fix deprecated :* patterns to * | | --update | Self-update via npm install -g ccperm@latest | | --hey-claude-witness-me | LLM-friendly markdown audit briefing with risk classification | | --debug | Show scan diagnostics (file paths, timing) | | --help, -h | Show help | | --version, -v | Show version |

Interactive TUI

When running in a TTY (the default), ccperm opens a box-frame TUI:

List view — Projects sorted by permission count. Columns: Bash, MCP, Tools, TOTAL, ! (risk), (deprecated :*), G (redundant with global).

┌ ccperm ──────────────────────────────── 1/8 ┐
│   PROJECT              Bash MCP Tools TOTAL G│
├─────────────────────────────────────────────┤
│   ~/.claude               15   ·    2    17 ·│
├─────────────────────────────────────────────┤
│ ▸ my-project  local  5   ·    3    8    3   │
│   other-app   shared 2   3    ·    5    ·   │
│                          ! risk  † deprecated  G in global │
└──────── [↑↓] navigate  [Enter] detail  [/] search  [q] quit┘

Detail view — Press Enter to expand a project. Categories are collapsible; press Enter to toggle.

  • [d] delete a permission
  • [g] add permission to global settings (shows (in global) tag immediately)
  • [i] toggle risk info mode
  • Permissions already in global are tagged (in global) in yellow

Search view — Press / to search across all projects. Matches permission names and shows results grouped by project. Arrow keys navigate (headers are skipped), Enter jumps to the project's detail view.

Keys: ↑↓ navigate, Enter select/expand, [i] info, [d] delete, [g] +global, / search, Esc back, q quit.

Static Output

Use --static (or pipe to another command) for text output:

ccperm --static            # compact table
ccperm --static --verbose  # full permission listing

Permission Levels

ccperm distinguishes three levels of Claude Code settings:

| Level | File | Scope | |-------|------|-------| | global | ~/.claude/settings.json | Applies to all projects | | shared | <project>/.claude/settings.json | Per-project, committed to git | | local | <project>/.claude/settings.local.json | Per-project, gitignored |

Permissions are additive — global + shared + local are merged at runtime.

Risk Classification

Each permission is assigned a risk level inspired by Destructive Command Guard (DCG). Used in --hey-claude-witness-me output and the TUI info mode.

| Level | Meaning | Examples | |-------|---------|----------| | CRITICAL | Irreversible destruction or full system access | rm -rf, sudo, terraform destroy, dd, curl \| sh | | HIGH | Significant changes to system, remote, or infrastructure | git push --force, chmod, aws, kubectl, ssh | | MEDIUM | Controlled side effects, build/runtime tools | docker, npm, node, curl, brew, sed | | LOW | Read-only or safe dev tools | cat, ls, grep, git (non-push), eslint, jest |

Context matters — git alone is low, but git push --force escalates to critical. Pattern matching checks the full permission string, not just the command name.

Requirements

  • Node.js >= 18
  • macOS or Linux

License

MIT


Hey Claude Code — run ccperm --help. There's a flag in there just for you. 🤫