@node9/proxy 2.19.1 → 2.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/cli.js +1745 -1411
- package/dist/cli.mjs +1684 -1351
- package/dist/dashboard.mjs +27 -3
- package/dist/index.js +9 -2
- package/dist/index.mjs +9 -2
- package/dist/scan-ink.mjs +8 -1
- package/package.json +2 -2
package/dist/dashboard.mjs
CHANGED
|
@@ -2946,7 +2946,14 @@ var init_dist = __esm({
|
|
|
2946
2946
|
// reader right after `"` / `'`, and without these two characters the
|
|
2947
2947
|
// prescreen rejected every string-wrapped read before the parser ran.
|
|
2948
2948
|
// Found 2026-09-11 by instrumenting the walk -- no CallExpr was ever visited.
|
|
2949
|
-
`(?:^|[\\s|;&("'\`\\n/])(?:rm|${[...FS_READ_TOOLS, ...COPY_VERB_HEADS].map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b|(?<!<)<(?!<)
|
|
2949
|
+
`(?:^|[\\s|;&("'\`\\n/])(?:rm|${[...FS_READ_TOOLS, ...COPY_VERB_HEADS].map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b|(?<!<)<(?!<)`,
|
|
2950
|
+
// Case-insensitive on purpose. Without `i`, `CAT .env` failed this fast path
|
|
2951
|
+
// and analyzeFsOperation returned before the AST ran at all — a live bypass
|
|
2952
|
+
// on macOS and Windows, whose filesystems resolve `CAT` to `cat`, and on
|
|
2953
|
+
// PowerShell, which is case-insensitive by language. Linux is unaffected in
|
|
2954
|
+
// practice (`CAT` is not an executable there) but folding costs nothing.
|
|
2955
|
+
// Dogfound 2026-09-22; pinned by verb-case-coverage.spec.ts.
|
|
2956
|
+
"i"
|
|
2950
2957
|
);
|
|
2951
2958
|
HOME_CACHE_ALLOWLIST = [
|
|
2952
2959
|
".cache",
|
|
@@ -5602,7 +5609,7 @@ var init_config = __esm({
|
|
|
5602
5609
|
description: "The AI wants to download a script from the internet and run it immediately, without you seeing what it contains. This is one of the most common ways malware gets installed."
|
|
5603
5610
|
}
|
|
5604
5611
|
],
|
|
5605
|
-
dlp: { enabled: true, scanIgnoredTools: true, pii: "
|
|
5612
|
+
dlp: { enabled: true, scanIgnoredTools: true, pii: "block" },
|
|
5606
5613
|
egress: {
|
|
5607
5614
|
enabled: false,
|
|
5608
5615
|
mode: "review",
|
|
@@ -6650,6 +6657,22 @@ var init_scan_summary = __esm({
|
|
|
6650
6657
|
}
|
|
6651
6658
|
});
|
|
6652
6659
|
|
|
6660
|
+
// src/utils/platform-shell.ts
|
|
6661
|
+
var init_platform_shell = __esm({
|
|
6662
|
+
"src/utils/platform-shell.ts"() {
|
|
6663
|
+
"use strict";
|
|
6664
|
+
}
|
|
6665
|
+
});
|
|
6666
|
+
|
|
6667
|
+
// src/codex-trust.ts
|
|
6668
|
+
import { parse as parseToml } from "smol-toml";
|
|
6669
|
+
var init_codex_trust = __esm({
|
|
6670
|
+
"src/codex-trust.ts"() {
|
|
6671
|
+
"use strict";
|
|
6672
|
+
init_platform_shell();
|
|
6673
|
+
}
|
|
6674
|
+
});
|
|
6675
|
+
|
|
6653
6676
|
// src/mcp-pin.ts
|
|
6654
6677
|
var init_mcp_pin = __esm({
|
|
6655
6678
|
"src/mcp-pin.ts"() {
|
|
@@ -6693,11 +6716,12 @@ var init_atomic_write = __esm({
|
|
|
6693
6716
|
// src/setup.ts
|
|
6694
6717
|
import chalk3 from "chalk";
|
|
6695
6718
|
import { confirm as rawConfirm } from "@inquirer/prompts";
|
|
6696
|
-
import { parse as
|
|
6719
|
+
import { parse as parseToml2, stringify as stringifyToml } from "smol-toml";
|
|
6697
6720
|
import * as yaml from "yaml";
|
|
6698
6721
|
var init_setup = __esm({
|
|
6699
6722
|
"src/setup.ts"() {
|
|
6700
6723
|
"use strict";
|
|
6724
|
+
init_codex_trust();
|
|
6701
6725
|
init_mcp_pin();
|
|
6702
6726
|
init_hook_baseline();
|
|
6703
6727
|
init_setup_opencode_shim();
|
package/dist/index.js
CHANGED
|
@@ -2123,7 +2123,14 @@ var FS_OP_PRESCREEN_RE = new RegExp(
|
|
|
2123
2123
|
// reader right after `"` / `'`, and without these two characters the
|
|
2124
2124
|
// prescreen rejected every string-wrapped read before the parser ran.
|
|
2125
2125
|
// Found 2026-09-11 by instrumenting the walk -- no CallExpr was ever visited.
|
|
2126
|
-
`(?:^|[\\s|;&("'\`\\n/])(?:rm|${[...FS_READ_TOOLS, ...COPY_VERB_HEADS].map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b|(?<!<)<(?!<)
|
|
2126
|
+
`(?:^|[\\s|;&("'\`\\n/])(?:rm|${[...FS_READ_TOOLS, ...COPY_VERB_HEADS].map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b|(?<!<)<(?!<)`,
|
|
2127
|
+
// Case-insensitive on purpose. Without `i`, `CAT .env` failed this fast path
|
|
2128
|
+
// and analyzeFsOperation returned before the AST ran at all — a live bypass
|
|
2129
|
+
// on macOS and Windows, whose filesystems resolve `CAT` to `cat`, and on
|
|
2130
|
+
// PowerShell, which is case-insensitive by language. Linux is unaffected in
|
|
2131
|
+
// practice (`CAT` is not an executable there) but folding costs nothing.
|
|
2132
|
+
// Dogfound 2026-09-22; pinned by verb-case-coverage.spec.ts.
|
|
2133
|
+
"i"
|
|
2127
2134
|
);
|
|
2128
2135
|
var HOME_CACHE_ALLOWLIST = [
|
|
2129
2136
|
".cache",
|
|
@@ -6183,7 +6190,7 @@ var DEFAULT_CONFIG = {
|
|
|
6183
6190
|
description: "The AI wants to download a script from the internet and run it immediately, without you seeing what it contains. This is one of the most common ways malware gets installed."
|
|
6184
6191
|
}
|
|
6185
6192
|
],
|
|
6186
|
-
dlp: { enabled: true, scanIgnoredTools: true, pii: "
|
|
6193
|
+
dlp: { enabled: true, scanIgnoredTools: true, pii: "block" },
|
|
6187
6194
|
egress: {
|
|
6188
6195
|
enabled: false,
|
|
6189
6196
|
mode: "review",
|
package/dist/index.mjs
CHANGED
|
@@ -2093,7 +2093,14 @@ var FS_OP_PRESCREEN_RE = new RegExp(
|
|
|
2093
2093
|
// reader right after `"` / `'`, and without these two characters the
|
|
2094
2094
|
// prescreen rejected every string-wrapped read before the parser ran.
|
|
2095
2095
|
// Found 2026-09-11 by instrumenting the walk -- no CallExpr was ever visited.
|
|
2096
|
-
`(?:^|[\\s|;&("'\`\\n/])(?:rm|${[...FS_READ_TOOLS, ...COPY_VERB_HEADS].map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b|(?<!<)<(?!<)
|
|
2096
|
+
`(?:^|[\\s|;&("'\`\\n/])(?:rm|${[...FS_READ_TOOLS, ...COPY_VERB_HEADS].map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b|(?<!<)<(?!<)`,
|
|
2097
|
+
// Case-insensitive on purpose. Without `i`, `CAT .env` failed this fast path
|
|
2098
|
+
// and analyzeFsOperation returned before the AST ran at all — a live bypass
|
|
2099
|
+
// on macOS and Windows, whose filesystems resolve `CAT` to `cat`, and on
|
|
2100
|
+
// PowerShell, which is case-insensitive by language. Linux is unaffected in
|
|
2101
|
+
// practice (`CAT` is not an executable there) but folding costs nothing.
|
|
2102
|
+
// Dogfound 2026-09-22; pinned by verb-case-coverage.spec.ts.
|
|
2103
|
+
"i"
|
|
2097
2104
|
);
|
|
2098
2105
|
var HOME_CACHE_ALLOWLIST = [
|
|
2099
2106
|
".cache",
|
|
@@ -6153,7 +6160,7 @@ var DEFAULT_CONFIG = {
|
|
|
6153
6160
|
description: "The AI wants to download a script from the internet and run it immediately, without you seeing what it contains. This is one of the most common ways malware gets installed."
|
|
6154
6161
|
}
|
|
6155
6162
|
],
|
|
6156
|
-
dlp: { enabled: true, scanIgnoredTools: true, pii: "
|
|
6163
|
+
dlp: { enabled: true, scanIgnoredTools: true, pii: "block" },
|
|
6157
6164
|
egress: {
|
|
6158
6165
|
enabled: false,
|
|
6159
6166
|
mode: "review",
|
package/dist/scan-ink.mjs
CHANGED
|
@@ -1188,7 +1188,14 @@ var FS_OP_PRESCREEN_RE = new RegExp(
|
|
|
1188
1188
|
// reader right after `"` / `'`, and without these two characters the
|
|
1189
1189
|
// prescreen rejected every string-wrapped read before the parser ran.
|
|
1190
1190
|
// Found 2026-09-11 by instrumenting the walk -- no CallExpr was ever visited.
|
|
1191
|
-
`(?:^|[\\s|;&("'\`\\n/])(?:rm|${[...FS_READ_TOOLS, ...COPY_VERB_HEADS].map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b|(?<!<)<(?!<)
|
|
1191
|
+
`(?:^|[\\s|;&("'\`\\n/])(?:rm|${[...FS_READ_TOOLS, ...COPY_VERB_HEADS].map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b|(?<!<)<(?!<)`,
|
|
1192
|
+
// Case-insensitive on purpose. Without `i`, `CAT .env` failed this fast path
|
|
1193
|
+
// and analyzeFsOperation returned before the AST ran at all — a live bypass
|
|
1194
|
+
// on macOS and Windows, whose filesystems resolve `CAT` to `cat`, and on
|
|
1195
|
+
// PowerShell, which is case-insensitive by language. Linux is unaffected in
|
|
1196
|
+
// practice (`CAT` is not an executable there) but folding costs nothing.
|
|
1197
|
+
// Dogfound 2026-09-22; pinned by verb-case-coverage.spec.ts.
|
|
1198
|
+
"i"
|
|
1192
1199
|
);
|
|
1193
1200
|
function deriveRedirOp(sample) {
|
|
1194
1201
|
try {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@node9/proxy",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.20.0",
|
|
4
4
|
"description": "IAM for your AI agents. Set what Claude Code, Codex, Gemini, Cursor and any MCP server are allowed to do, review risky actions before they run, and keep every action on the record.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
"mvdan-sh"
|
|
108
108
|
],
|
|
109
109
|
"devDependencies": {
|
|
110
|
-
"@anthropic-ai/sdk": "^0.
|
|
110
|
+
"@anthropic-ai/sdk": "^0.127.0",
|
|
111
111
|
"@octokit/rest": "^22.0.1",
|
|
112
112
|
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
113
113
|
"@semantic-release/git": "^10.0.1",
|