Socket
Book a DemoSign in
Socket

@snytch/nextjs

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@snytch/nextjs - npm Package Compare versions

Comparing version
0.13.0
to
0.14.0
+55
-5
dist/cli.js
#!/usr/bin/env node
import { cwd } from 'process';
import { resolve, basename } from 'path';
import { resolve, basename, join } from 'path';
import { readFileSync } from 'fs';
import { scan } from './commands/scan.js';

@@ -12,2 +13,41 @@ import { check } from './commands/check.js';

import { loadConfig } from './config.js';
import { parseEnvFileContent } from './parser.js';
/** AI-related env var names that snytch reads from the environment. */
const AI_KEY_NAMES = ['ANTHROPIC_API_KEY', 'OPENAI_API_KEY'];
/**
* Load AI API keys from `.env` and `.env.local` into `process.env`.
*
* Only sets a key if it is not already present in the environment (shell
* env always takes priority). `.env.local` is read after `.env`, so its
* values win when both files define the same key.
*
* This is intentionally limited to AI keys. snytch does not load the full
* `.env` file into the process, which would risk masking real env vars.
*
* @param projectRoot - Absolute path to the project root directory.
*/
function loadAiKeysFromEnv(projectRoot) {
const candidates = ['.env', '.env.local'];
const found = new Map();
for (const filename of candidates) {
let content;
try {
content = readFileSync(join(projectRoot, filename), 'utf-8');
}
catch {
continue; // file doesn't exist — expected
}
const entries = parseEnvFileContent(content, filename);
for (const entry of entries) {
if (AI_KEY_NAMES.includes(entry.key)) {
found.set(entry.key, entry.value);
}
}
}
for (const [key, value] of found) {
if (!process.env[key]) {
process.env[key] = value;
}
}
}
function parseFailOn(args, i) {

@@ -23,2 +63,4 @@ const val = args[i + 1];

const projectRoot = cwd();
// Load AI API keys from .env / .env.local so users don't need to export them
loadAiKeysFromEnv(projectRoot);
if (!command || !['scan', 'check', 'diff', 'all', 'mcp', 'demo'].includes(command)) {

@@ -46,3 +88,3 @@ console.error('Usage:');

let failOn = 'critical';
let aiProvider = 'anthropic';
let aiProvider;
let dir = projectRoot + '/.next';

@@ -87,4 +129,8 @@ const envFiles = [];

const config = loadConfig(projectRoot);
const rcaEnabled = config?.rca?.enabled === true;
const resolvedAiProvider = rcaEnabled
? (aiProvider ?? config?.rca?.provider ?? 'anthropic')
: 'none';
const rcaMaxTokens = config?.rca?.maxTokens;
const options = { dir, projectRoot, json, report, failOn, aiProvider, rcaMaxTokens, graph };
const options = { dir, projectRoot, json, report, failOn, aiProvider: resolvedAiProvider, rcaMaxTokens, graph };
const result = await scan(options);

@@ -174,2 +220,6 @@ printScanResult(result, options);

: undefined;
const rcaEnabled = config?.rca?.enabled === true;
const resolvedAiProvider = rcaEnabled
? (aiProvider ?? config?.rca?.provider ?? 'anthropic')
: 'none';
const allOptions = {

@@ -180,3 +230,3 @@ projectRoot,

failOn,
aiProvider,
aiProvider: resolvedAiProvider,
rcaMaxTokens: config?.rca?.maxTokens,

@@ -199,3 +249,3 @@ graph,

failOn,
aiProvider,
aiProvider: resolvedAiProvider,
rcaMaxTokens: config?.rca?.maxTokens,

@@ -202,0 +252,0 @@ graph,

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}

@@ -73,2 +73,10 @@ export type Severity = 'critical' | 'warning' | 'info';

export interface RcaConfig {
/**
* Enable AI root cause analysis. Must be explicitly set to `true` for RCA
* to run. When omitted or `false`, no API calls are made and no tokens are
* consumed, even if an API key is present in the environment.
*/
enabled?: boolean;
/** AI provider to use: `'anthropic'` (Claude) or `'openai'` (GPT-4o). Defaults to `'anthropic'`. */
provider?: AiProvider;
/** Maximum tokens for the AI RCA response. Defaults to 2048. */

@@ -75,0 +83,0 @@ maxTokens?: number;

@@ -1,1 +0,1 @@

{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,YAAY,CAAC;AACjJ,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,sFAAsF;IACtF,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,iFAAiF;IACjF,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,8EAA8E;IAC9E,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,SAAS;IACxB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oGAAoG;IACpG,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kJAAkJ;IAClJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,eAAe,GAAG,YAAY,GAAG,cAAc,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAID,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,2DAA2D;IAC3D,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,0EAA0E;IAC1E,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC;CACjC;AAID,MAAM,WAAW,WAAW;IAC1B,mFAAmF;IACnF,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB,0FAA0F;IAC1F,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;OAIG;IACH,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iCAAiC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;OAGG;IACH,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACrE,wCAAwC;IACxC,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;CACpB;AAID;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACzB,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,gCAAgC;IAChC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB"}
{
"name": "@snytch/nextjs",
"version": "0.13.0",
"version": "0.14.0",
"description": "Bundle scanning, NEXT_PUBLIC_ exposure detection, and environment drift for Next.js",

@@ -5,0 +5,0 @@ "type": "module",

+191
-68

@@ -10,5 +10,5 @@ # @snytch/nextjs

Bundle scanning, secret detection, and environment exposure analysis for Next.js applications.
Bundle scanning, secret detection, and environment exposure analysis for Next.js applications. Detect leaked API keys, tokens, and credentials in your client bundles and `.env` files before they reach production.
## Why we all need this
## Next.js secret scanning: how API keys and secrets leak into client bundles

@@ -19,3 +19,3 @@ Next.js makes it easy to accidentally expose secrets to the browser in two distinct ways. First, any variable prefixed with `NEXT_PUBLIC_` is embedded into the client bundle at build time and sent to every visitor, even if the value is a secret key that was never meant to leave the server. Second, a server-only variable without the prefix can still end up in a client bundle if it's imported by a shared module, a utility function, or a component that renders on both server and client. By the time either problem reaches production, the value is in every visitor's browser, your build artifacts, your CDN cache, and potentially your git history.

`@snytch/nextjs` scans your compiled bundle, checks your `.env` files, and compares your environments to catch these issues before they reach production.
`@snytch/nextjs` is a Next.js secret scanner that scans your compiled bundle, checks your `.env` files, and compares your environments to catch these issues before they reach production. It fits into DevSecOps pipelines and helps teams meet compliance requirements (SOC 2, OWASP) around credential management.

@@ -35,2 +35,19 @@ ## Requirements

Then add these scripts to your `package.json`:
```json
"scripts": {
"snytch": "snytch all",
"snytch:scan": "snytch scan",
"snytch:check": "snytch check",
"snytch:diff": "snytch diff"
}
```
Now you can run `npm run snytch` to scan, check, and diff in one shot, or run each command individually.
Optionally, [create a snytch.config.js file](#configuration) in your project root to customize behavior: set server-only variable names, default diff files, suppression rules, and more.
And the AI RCA will require a key. See [AI Root Cause Analysis](#ai-root-cause-analysis) for setup.
## Commands

@@ -40,3 +57,3 @@

Scan the compiled Next.js bundle for leaked secrets in client-side JavaScript.
Detect leaked API keys, secrets, and credentials in compiled Next.js bundles.

@@ -54,16 +71,22 @@ ```bash

| Option | Default | Description |
| --------------- | ----------- | ------------------------------------------------------------------------------------------------------------- |
| `--dir` | `./.next` | Path to the `.next` directory |
| `--json` | off | Output results as JSON |
| `--report` | off | Generate an HTML report at `./snytch-reports/snytch-report.html` |
| `--graph` | off | Scan the module dependency graph for server-only modules reachable from client entry points. Requires a production build with `.next/trace`. |
| `--fail-on` | `critical` | Exit code threshold: `critical`, `warning`, or `all` |
| `--ai-provider` | `anthropic` | AI RCA provider: `anthropic` (requires `ANTHROPIC_API_KEY`) or `openai` (requires `OPENAI_API_KEY`) or `none`. RCA is skipped when no key is present. |
<details>
<summary>snytch scan flags</summary>
<br>
![Scan report showing detected secrets, severity levels, file paths, and git provenance](https://raw.githubusercontent.com/tristandenyer/snytch-nextjs/main/docs/screenshots/snytch-report-findings.png)
| Option | Default | Description |
| --------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--dir` | `./.next` | Path to the `.next` directory |
| `--json` | off | Output results as JSON |
| `--report` | off | Generate an HTML report at `./snytch-reports/snytch-report.html` |
| `--graph` | off | Scan the module dependency graph for server-only modules reachable from client entry points. Requires a production build with `.next/trace`. |
| `--fail-on` | `critical` | Exit code threshold: `critical`, `warning`, or `all` |
| `--ai-provider` | `anthropic` | AI RCA provider: `anthropic` (requires `ANTHROPIC_API_KEY`) or `openai` (requires `OPENAI_API_KEY`) or `none`. See [AI Root Cause Analysis](#ai-root-cause-analysis) for key setup. |
</details>
![Next.js secret scanner report showing detected API keys, severity levels, file paths, and git provenance](https://raw.githubusercontent.com/tristandenyer/snytch-nextjs/main/docs/screenshots/snytch-report-findings.png)
### `snytch check`
Check `.env` files for `NEXT_PUBLIC_` variables that look like secrets. Any variable prefixed with `NEXT_PUBLIC_` is embedded into the client bundle at build time and sent to every browser that loads your app. This command flags values that match known secret patterns or look high-entropy enough to be credentials.
Audit `.env` files for `NEXT_PUBLIC_` variables that expose secrets to the client. Any variable prefixed with `NEXT_PUBLIC_` is embedded into the client bundle at build time and sent to every browser that loads your app. This command flags values that match known secret patterns or look high-entropy enough to be credentials.

@@ -81,2 +104,6 @@ ```bash

<details>
<summary>snytch check flags</summary>
<br>
| Option | Default | Description |

@@ -89,5 +116,7 @@ | ----------- | ------------- | ---------------------------------------------------------------------- |

</details>
### `snytch diff`
Compare environment variable key presence across two or more `.env` files to prevent production outages caused by missing variables. A developer adds a key to `.env.local`, the PR merges, and production breaks because nobody added the key there. `diff` catches that gap before deploy.
Detect environment variable drift across two or more `.env` files to prevent production outages caused by missing variables. A developer adds a key to `.env.local`, the PR merges, and production breaks because nobody added the key there. `diff` catches that gap before deploy.

@@ -116,22 +145,39 @@ It only compares key names, never values. It tells you what is missing, not what the values are. This is primarily a CI/CD tool: locally you typically only have one env file, but in a pipeline you can materialize multiple files from secrets and compare them.

<details>
<summary>snytch diff flags</summary>
<br>
CLI `--env` flags always take priority over the config when both are present.
| Option | Default | Description |
| ---------- | -------------------------- | --------------------------------------------------------------------- |
| `--env` | `diffFiles` from config | Path to a `.env` file. Repeat for multiple files. Falls back to `diffFiles` in `snytch.config.js` when omitted. At least two files are required (from flags, config, or both). |
| `--json` | off | Output results as JSON |
| `--report` | off | Generate an HTML report at `./snytch-reports/snytch-diff-report.html` |
| `--strict` | off | Exit 1 for any drift, not just `serverOnly` keys |
| Option | Default | Description |
| ---------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `--env` | `diffFiles` from config | Path to a `.env` file. Repeat for multiple files. Falls back to `diffFiles` in `snytch.config.js` when omitted. At least two files are required (from flags, config, or both). |
| `--json` | off | Output results as JSON |
| `--report` | off | Generate an HTML report at `./snytch-reports/snytch-diff-report.html` |
| `--strict` | off | Exit 1 for any drift, not just `serverOnly` keys |
![Diff report showing environment variable drift across .env files, with keys that are missing or only present in one environment](https://raw.githubusercontent.com/tristandenyer/snytch-nextjs/main/docs/screenshots/snytch-diff-report.png)
</details>
![Next.js environment variable drift report showing .env file differences, with keys that are missing or only present in one environment](https://raw.githubusercontent.com/tristandenyer/snytch-nextjs/main/docs/screenshots/snytch-diff-report.png)
### `snytch mcp`
Start the snytch MCP server on stdio transport. You don't run this directly. Your editor runs it for you based on the config file you provide. See [MCP Server](#mcp-server) below for setup instructions.
Start the snytch [MCP](https://modelcontextprotocol.io) server so you can run scans directly from inside your AI editor (Cursor, Windsurf, or Claude Desktop). You don't run this command directly. Your editor launches it automatically based on a small config file you add to your project or home directory.
```bash
snytch mcp
Once configured, you can ask your assistant things like "scan my bundle for leaked secrets" or "check my .env files for exposed API keys" and get structured results back inline.
To set it up, add this to `.cursor/mcp.json` in your project root (Cursor) or the equivalent config file for your editor:
```json
{
"mcpServers": {
"snytch": {
"command": "npx",
"args": ["-y", "@snytch/nextjs", "mcp"]
}
}
}
```
---
See [MCP Server for Cursor, Windsurf, and Claude Desktop](#mcp-server-for-cursor-windsurf-and-claude-desktop) below for full setup instructions for each editor, available tools, and schema details.

@@ -173,3 +219,3 @@ ### `snytch demo`

![AI RCA tab: Claude or GPT-4o explains what leaked, when it was introduced, how it ended up in the bundle, and how to fix it, with a before/after code example and editor prompts](https://raw.githubusercontent.com/tristandenyer/snytch-nextjs/main/docs/screenshots/snytch-report-ai-rca.png)
![Next.js AI root cause analysis: Claude or GPT-4o explains what leaked, when it was introduced, how it ended up in the bundle, and how to fix it, with a before/after code example and editor prompts](https://raw.githubusercontent.com/tristandenyer/snytch-nextjs/main/docs/screenshots/snytch-report-ai-rca.png)

@@ -194,13 +240,12 @@ ### `snytch all`

---
## Features
- Scans six surfaces per build:
- `.next/static/chunks`: client-side JavaScript and CSS bundles
- `.next/static/chunks/*.js.map`: source maps containing pre-minification source code
- `.next/server/pages`: `__NEXT_DATA__` blocks embedded in HTML responses
- `next.config.js` `env` block: values injected into all bundles at build time
- `.next/server/middleware.js`: compiled edge middleware
- `.next/trace` module dependency graph (opt-in via `--graph`): structural import chain analysis
This secret scanner covers six surfaces per build:
- `.next/static/chunks`: client-side JavaScript and CSS bundles
- `.next/static/chunks/*.js.map`: source maps containing pre-minification source code
- `.next/server/pages`: `__NEXT_DATA__` blocks embedded in HTML responses
- `next.config.js` `env` block: values injected into all bundles at build time
- `.next/server/middleware.js`: compiled edge middleware
- `.next/trace` module dependency graph (opt-in via `--graph`): structural import chain analysis
- Detects 240+ secret patterns including:

@@ -229,8 +274,64 @@ - AWS access keys, session tokens, and resource ARNs

---
## AI Root Cause Analysis
## MCP Server
When `--report` is set, snytch can use Claude (Anthropic) or GPT-4o (OpenAI) to generate a root cause analysis for each finding: what leaked, how it ended up in the bundle, and how to fix it.
`@snytch/nextjs` includes an [MCP](https://modelcontextprotocol.io) server so you can run scans directly from inside Cursor, Windsurf, or Claude Desktop without touching a terminal.
RCA is **opt-in**. No API calls are made and no tokens are consumed unless you explicitly enable it in your config.
### Setup
**Step 1: Enable RCA in your config**
```js
// snytch.config.js
export default {
rca: {
enabled: true, // required: opt in to AI analysis
provider: 'anthropic', // optional: 'anthropic' (default) or 'openai'
},
};
```
**Step 2: Add your API key**
Add your key to `.env.local` in your project root:
```bash
# .env.local (make sure this file is in .gitignore)
ANTHROPIC_API_KEY=sk-ant-...
```
Or for OpenAI:
```bash
# .env.local
OPENAI_API_KEY=sk-...
```
Snytch reads `ANTHROPIC_API_KEY` and `OPENAI_API_KEY` from `.env` and `.env.local` automatically. If the key is already set in your shell environment, the shell value takes priority.
You can also pass the key inline for one-off runs:
```bash
ANTHROPIC_API_KEY=sk-ant-... snytch scan --report
```
**Step 3: Run a scan with `--report`**
```bash
snytch scan --report
# Override the provider for a single run
snytch scan --report --ai-provider openai
```
If `rca.enabled` is not set to `true`, the `--report` flag still generates the HTML report but skips the AI analysis section. If `rca.enabled` is `true` but no API key is found, RCA is skipped and everything else runs normally.
> [!TIP]
> Make sure `.env.local` is in your `.gitignore` so your API key is never committed.
## MCP Server for Cursor, Windsurf, and Claude Desktop
`@snytch/nextjs` includes an [MCP](https://modelcontextprotocol.io) server so you can run secret scans directly from inside Cursor, Windsurf, or Claude Desktop without touching a terminal.
Once configured, you can ask your AI assistant things like:

@@ -254,3 +355,5 @@

**`snytch_scan`**
<details>
<summary>snytch_scan</summary>
<br>

@@ -268,4 +371,8 @@ ```jsonc

**`snytch_check`**
</details>
<details>
<summary>snytch_check</summary>
<br>
```jsonc

@@ -282,4 +389,8 @@ // Input

**`snytch_diff`**
</details>
<details>
<summary>snytch_diff</summary>
<br>
```jsonc

@@ -297,2 +408,4 @@ // Input

</details>
### Editor setup

@@ -302,3 +415,5 @@

#### Cursor
<details>
<summary>Cursor</summary>
<br>

@@ -322,4 +437,8 @@ 1. Open (or create) `.cursor/mcp.json` in your project root.

#### Windsurf
</details>
<details>
<summary>Windsurf</summary>
<br>
1. Open `~/.codeium/windsurf/mcp_config.json` (create it if it doesn't exist).

@@ -342,4 +461,8 @@ 2. Add the following:

#### Claude Desktop
</details>
<details>
<summary>Claude Desktop</summary>
<br>
1. Open the Claude Desktop config file for your platform (create it if it doesn't exist):

@@ -370,3 +493,3 @@

---
</details>

@@ -388,2 +511,4 @@ ## Configuration

rca: {
enabled: true,
provider: 'anthropic',
maxTokens: 2048,

@@ -408,10 +533,12 @@ },

| Option | Type | Description |
| --------------- | ---------------------------------- | ------------------------------------------------------------------------------------------- |
| `serverOnly` | `string[]` | Variable names that must never be exposed to the client |
| `diffFiles` | `string[]` | Default env files for `snytch diff`. When set, `diff` and `all` use these files automatically without `--env` flags. CLI flags override this when provided. |
| Option | Type | Description |
| --------------- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `serverOnly` | `string[]` | Variable names that must never be exposed to the client |
| `diffFiles` | `string[]` | Default env files for `snytch diff`. When set, `diff` and `all` use these files automatically without `--env` flags. CLI flags override this when provided. |
| `diffAliases` | `string[][]` | Alias groups for diff key matching. Each inner array lists key names that should be treated as the same logical variable. The first name in each group is the canonical name used in reports. Example: `[['STRIPE_SECRET_KEY', 'STRIPE_SECRET_KEY_TEST']]`. |
| `failOn` | `'critical' \| 'warning' \| 'all'` | Default exit code threshold for all commands |
| `rca.maxTokens` | `number` | Max tokens for AI RCA responses (default: 2048). Increase if responses are being truncated. |
| `suppress` | `SuppressRule[]` | Rules to silence known-safe findings. See [Suppression rules](#suppression-rules) below. |
| `failOn` | `'critical' \| 'warning' \| 'all'` | Default exit code threshold for all commands |
| `rca.enabled` | `boolean` | Set to `true` to enable AI root cause analysis. When omitted or `false`, no API calls are made and no tokens are consumed, even if an API key is present. |
| `rca.provider` | `'anthropic' \| 'openai'` | AI provider for RCA. Defaults to `'anthropic'`. Can be overridden per-run with `--ai-provider`. |
| `rca.maxTokens` | `number` | Max tokens for AI RCA responses (default: 2048). Increase if responses are being truncated. |
| `suppress` | `SuppressRule[]` | Rules to silence known-safe findings. See [Suppression rules](#suppression-rules) below. |

@@ -424,27 +551,23 @@ When `serverOnly` is set:

---
## Suppression rules
Each entry in the `suppress` array supports the following fields:
Each entry in the `suppress` array supports the following options:
| Field | Required | Description |
| ---------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `reason` | yes | Why this finding is being suppressed. Shown in the report and terminal output. |
| `pattern` | no | Substring match against the finding's pattern name. Omit to match all patterns. |
| Option | Required | Description |
| ---------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `reason` | yes | Why this finding is being suppressed. Shown in the report and terminal output. |
| `pattern` | no | Substring match against the finding's pattern name. Omit to match all patterns. |
| `filePath` | no | Substring match against the finding's file path. Use this to suppress a finding in one specific file rather than everywhere. Omit to match all files. |
| `surface` | no | Limit to a specific scan surface: `pattern-match`, `next-data`, `config-env`, `middleware-secret`, `sourcemap-secret`. |
| `addedBy` | no | The person who added this rule: a name, username, or email. Shown in the report so others know who to ask about it. |
| `until` | no | ISO-8601 expiry date (`"YYYY-MM-DD"`). The rule stops suppressing findings on this date and appears as a warning in the report and terminal output. |
| `surface` | no | Limit to a specific scan surface: `pattern-match`, `next-data`, `config-env`, `middleware-secret`, `sourcemap-secret`. |
| `addedBy` | no | The person who added this rule: a name, username, or email. Shown in the report so others know who to ask about it. |
| `until` | no | ISO-8601 expiry date (`"YYYY-MM-DD"`). The rule stops suppressing findings on this date and appears as a warning in the report and terminal output. |
All fields are AND-matched: a rule with both `pattern` and `filePath` only suppresses findings that match both. This lets you target a specific finding in a specific file without suppressing every instance across the project.
All options are AND-matched: a rule with both `pattern` and `filePath` only suppresses findings that match both. This lets you target a specific finding in a specific file without suppressing every instance across the project.
Rules with an expired `until` date are never silently dropped. They surface as warnings so your team knows to remove or extend them.
---
## GitHub Actions and CI/CD secret scanning
## CI/CD integration
Add secret scanning to your GitHub Actions workflow (or any CI/CD pipeline) to fail builds when leaked credentials are detected. The scan command exits with code 1 when findings at or above the specified severity are found, so it works as a pipeline gate without any extra configuration.
Running snytch in CI catches secrets before they reach production. The scan command exits with code 1 when findings at or above the specified severity are found, so it works as a pipeline gate without any extra configuration.
```yaml

@@ -451,0 +574,0 @@ - name: Build