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

@interven/claude-code-hook

v0.1.2

Published

Claude Code PreToolUse hook for Interven. Scans every Claude Code tool call (Read/Write/Edit/Bash/Glob/Grep/MCP) through Interven before execution. Blocks .env reads, denies destructive shell, redacts secrets — no agent code change.

Readme

@interven/claude-code-hook

PreToolUse hook for Claude Code. Scans every tool call — Read, Write, Edit, Bash, Glob, Grep, WebFetch, MCP — through Interven before Claude Code executes it. Blocks .env reads, denies destructive shell commands, redacts secrets, and routes risky actions through human approval.

No Claude Code source changes. One config file edit, one env var, done.

Install

npm install -g @interven/claude-code-hook
# or use npx -y (no install needed, slower cold start)

Wire it up

Add to ~/.claude/settings.json (user-wide) or <repo>/.claude/settings.json (per-repo):

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "npx -y @interven/claude-code-hook",
            "timeout": 10
          }
        ]
      }
    ]
  }
}

Set your Interven API key:

export INTERVEN_API_KEY=iv_live_xxxxxxxxxxxxxx

Next time Claude Code fires a tool, the hook runs against your Interven policies. Try reading .env — should be denied with the policy-defined reason.

What gets enforced

Depends on your Interven policies. A typical vibe-coder setup (from @interven/policy-packsvibe-coder-starter.yaml):

  • .env, **/secrets/**, *.pem, id_rsa, credentials.json — denied on read
  • Destructive shell (rm -rf /, dd if=, mkfs, > /dev/sda) — denied
  • git push to main — paused for approval
  • Stripe/OpenAI/AWS/GitHub keys in tool args — sanitized in audit log

Customize the policies to your stack via the Interven console or the @interven/policy-cli YAML workflow.

Environment variables

| Variable | Default | Purpose | |---|---|---| | INTERVEN_API_KEY | (required) | Your iv_live_* key | | INTERVEN_GATEWAY | https://api.intervensecurity.com | Override for self-host | | INTERVEN_TIMEOUT_MS | 5000 | Per-scan timeout | | INTERVEN_FAIL_CLOSED | 0 (open) | Set to 1 to deny on hook error |

Decision mapping

| Interven decision | Claude Code response | Effect | |---|---|---| | ALLOW | decision: "approve" | Tool runs normally | | DENY | decision: "block" | Tool blocked, reason shown to Claude | | SANITIZE | decision: "approve" | Approved + scan logged for audit; sensitive fields are sanitized at the network layer if the tool then makes an HTTP call out | | REQUIRE_APPROVAL | decision: "block" | Blocked; approve at app.intervensecurity.com/approvals/<id>. Retry within 10 min hits the approval-grant window and auto-allows |

Behavior on failure

Default: fail-open — if Interven is unreachable, the hook approves the tool call and logs a warning to stderr. This keeps the developer loop unblocked during partial outages.

For environments where blocking on hook failure is preferred (regulated contexts):

export INTERVEN_FAIL_CLOSED=1

How it differs from @interven/copilot-hook

Same wire model (JSON in, JSON out), different agent. Use this package for Claude Code; use @interven/copilot-hook for GitHub Copilot Coding Agent. They share the underlying scan API and can be used together if your team uses both agents.

Source + issues

github.com/intervensecurity/claude-code-hook