@node9/proxy 1.10.2 → 1.11.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 +110 -4
- package/dist/cli.js +2812 -584
- package/dist/cli.mjs +2775 -546
- package/dist/index.js +80 -17
- package/dist/index.mjs +80 -17
- package/dist/shields/builtin/bash-safe.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -102,6 +102,10 @@ node9 mcp pin reset # clear all pins (re-pin on next connection)
|
|
|
102
102
|
|
|
103
103
|
This is automatic — no configuration needed. The gateway pins on first `tools/list` and enforces on every subsequent session.
|
|
104
104
|
|
|
105
|
+
### Skills Pinning — installed-plugin drift detection
|
|
106
|
+
|
|
107
|
+
Marketplace plugins at `~/.claude/plugins/marketplaces/` come from registries, not your workspace — `git status` never sees them. Each installed plugin gets its own pin (same model as MCP server pinning): installing a new plugin creates a new pin silently; only changes to an already-pinned plugin trigger drift. Opt-in via `policy.skillPinning.enabled: true`; use `mode: 'block'` for strict enforcement. User-edited files are **not** in default scope. Extend via `policy.skillPinning.roots`.
|
|
108
|
+
|
|
105
109
|
---
|
|
106
110
|
|
|
107
111
|
## Python SDK — govern any Python agent
|
|
@@ -125,12 +129,17 @@ configure(agent_name="my-agent", policy="require_approval")
|
|
|
125
129
|
- **Shell:** blocks `curl | bash`, `sudo` commands
|
|
126
130
|
- **DLP:** blocks AWS keys, GitHub tokens, Stripe keys, PEM private keys in any tool call argument
|
|
127
131
|
- **Auto-undo:** git snapshot before every AI file edit → `node9 undo` to revert
|
|
132
|
+
- **Skills Pinning:** SHA-256 verification of agent skill files between sessions; quarantines on drift (AST 02 + AST 07 — supply chain & update drift)
|
|
128
133
|
|
|
129
134
|
---
|
|
130
135
|
|
|
131
|
-
##
|
|
136
|
+
## Observability
|
|
137
|
+
|
|
138
|
+
Every tool call your AI agent makes is recorded — command, arguments, result, and cost estimate. Node9 gives you four ways to see what your agent is doing.
|
|
132
139
|
|
|
133
|
-
|
|
140
|
+
### Live HUD (statusline)
|
|
141
|
+
|
|
142
|
+
Node9 wires a live statusline into Claude Code that shows you what's happening in real time:
|
|
134
143
|
|
|
135
144
|
```
|
|
136
145
|
🛡 node9 | standard | [bash-safe] | ✅ 12 allowed 🛑 2 blocked 🚨 0 dlp | ~$0.43 | ⚡ no-force-push
|
|
@@ -146,9 +155,20 @@ Every tool call your AI agent makes is recorded — command, arguments, result,
|
|
|
146
155
|
|
|
147
156
|
The HUD is wired automatically by `node9 init`. Full session logs land in `~/.node9/audit.log`.
|
|
148
157
|
|
|
149
|
-
###
|
|
158
|
+
### `node9 tail` — live stream
|
|
150
159
|
|
|
151
|
-
|
|
160
|
+
Stream every tool call as it happens. Useful when you send an agent off to work and want to watch what it's doing:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
node9 tail # stream tool calls for the active session
|
|
164
|
+
node9 tail --all # include all projects
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Each line shows the tool name, a summary of its arguments, and the decision (allowed / blocked / DLP hit).
|
|
168
|
+
|
|
169
|
+
### `node9 report` — security dashboard
|
|
170
|
+
|
|
171
|
+
Run after a session to get a summary of what was allowed, blocked, DLP hits, cost, and daily activity:
|
|
152
172
|
|
|
153
173
|
```
|
|
154
174
|
$ node9 report --period 7d
|
|
@@ -175,6 +195,92 @@ $ node9 report --period 7d
|
|
|
175
195
|
|
|
176
196
|
Periods: `today`, `7d` (default), `30d`, `month`. Cost data is read from `~/.claude/projects/` — no API calls, fully offline.
|
|
177
197
|
|
|
198
|
+
### `node9 sessions` — session history
|
|
199
|
+
|
|
200
|
+
See what your AI agent did across sessions — prompt, tool calls, cost, files modified, and whether a snapshot was taken. Useful when you hand off a task and come back to review what happened:
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
$ node9 sessions --all
|
|
204
|
+
|
|
205
|
+
📋 node9 sessions — what your AI agent did
|
|
206
|
+
|
|
207
|
+
7 sessions $178.93 total 2379 tool calls 122 files modified
|
|
208
|
+
avg $25.56 /session 7 of 7 sessions had snapshots
|
|
209
|
+
|
|
210
|
+
Tool breakdown:
|
|
211
|
+
Bash ████████████████████ 1165 (49%)
|
|
212
|
+
Read ███████████░░░░░░░░░ 613 (26%)
|
|
213
|
+
Edit ██████░░░░░░░░░░░░░░ 367 (15%)
|
|
214
|
+
Other ███░░░░░░░░░░░░░░░░░ 203 (9%)
|
|
215
|
+
Write █░░░░░░░░░░░░░░░░░░░ 31 (1%)
|
|
216
|
+
|
|
217
|
+
─── Apr 15 ~/node9
|
|
218
|
+
14:47 implement delegated sessions feature 919 tools $74.45 📸 00ac39e2
|
|
219
|
+
12:47 ok, it seems you crash and we have a bug… 95 tools $6.40 📸 5a4e7fab
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Drill into any session for a full tool trace:
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
$ node9 sessions --detail 4812594b
|
|
226
|
+
|
|
227
|
+
Session 4812594b-c93f-4a26-91f0-44aa2e324918
|
|
228
|
+
Prompt can you push node9-proxy to git dev?
|
|
229
|
+
Project ~/node9
|
|
230
|
+
When Apr 9, 2026, 20:49
|
|
231
|
+
Cost ~$2.06
|
|
232
|
+
Snapshot ✓ taken
|
|
233
|
+
|
|
234
|
+
Tool calls (54):
|
|
235
|
+
20:49 Bash git status && git branch -a
|
|
236
|
+
20:52 Write /home/nadav/node9/node9-proxy/.git/hooks/pre-commit
|
|
237
|
+
20:56 Edit /home/nadav/node9/node9-proxy/src/cli/commands/check.ts
|
|
238
|
+
...
|
|
239
|
+
|
|
240
|
+
Files modified (3):
|
|
241
|
+
/home/nadav/node9/node9-proxy/.git/hooks/pre-commit
|
|
242
|
+
/home/nadav/node9/node9-proxy/src/cli/commands/check.ts
|
|
243
|
+
/home/nadav/node9/node9-proxy/src/cli/hud.ts
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
node9 sessions # last 7 days
|
|
248
|
+
node9 sessions --all # all time
|
|
249
|
+
node9 sessions --days 30 # last 30 days
|
|
250
|
+
node9 sessions --detail <session-id> # full tool trace (prefix match on session ID)
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
Currently works with Claude Code. Support for other agents coming as they expose session history.
|
|
254
|
+
|
|
255
|
+
### `node9 scan` — day-0 forecast
|
|
256
|
+
|
|
257
|
+
Not installed yet? Run `node9 scan` against your existing Claude Code history to see what Node9 **would have caught** if it had been running:
|
|
258
|
+
|
|
259
|
+
```
|
|
260
|
+
$ node9 scan
|
|
261
|
+
|
|
262
|
+
🔍 node9 scan — what would node9 catch?
|
|
263
|
+
|
|
264
|
+
42 sessions 3,891 tool calls 1,165 bash commands last 90 days
|
|
265
|
+
|
|
266
|
+
If node9 had been installed: 23 commands flagged for review
|
|
267
|
+
|
|
268
|
+
bash-safe · 12 findings → node9 shield enable bash-safe
|
|
269
|
+
block-pipe-to-shell ×8 — Pipe-to-shell is a common supply-chain attack vector
|
|
270
|
+
review-eval ×4 — eval of dynamic content requires human approval
|
|
271
|
+
|
|
272
|
+
Secrets / DLP · 2 potential secret leaks
|
|
273
|
+
aws-access-key AKIA**************** Bash Apr 12
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
`scan` reads raw JSONL history and runs the real policy engine — same shields and rules that would fire in production. No audit log needed.
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
node9 scan # last 90 days
|
|
280
|
+
node9 scan --all # all time
|
|
281
|
+
node9 scan --days 30 # custom window
|
|
282
|
+
```
|
|
283
|
+
|
|
178
284
|
---
|
|
179
285
|
|
|
180
286
|
## 📖 Full docs
|