@akasecurity/ai-tc-claude-code 0.9.7 → 0.9.9

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aka",
3
- "version": "0.9.7",
3
+ "version": "0.9.9",
4
4
  "description": "AI Traffic Control — inspect and govern AI prompts in Claude Code. Detection runs locally; events are recorded to a local SQLite store on your machine.",
5
5
  "homepage": "https://github.com/akasecurity/ai-tc",
6
6
  "author": { "name": "AKA Security" }
package/README.md CHANGED
@@ -7,9 +7,9 @@
7
7
 
8
8
  The Claude Code plugin for **[AI Traffic Control](https://github.com/akasecurity/ai-tc)** (`ai-tc`). It hooks into a Claude Code session and inspects its traffic — prompts, tool calls, tool results, file reads — scanning each event against your rule packs and applying inline **warn / redact / block** policies. Every event is recorded to a local SQLite store at `~/.aka/data/aka.db`.
9
9
 
10
- Detection runs entirely on your machine. There's no account and no backend nothing is sent anywhere to be scanned.[^egress]
10
+ Detection runs entirely on your machine. Standalone by default — no account and no backend, and nothing is sent anywhere to be scanned.[^egress]
11
11
 
12
- [^egress]: Live detection and enforcement run locally. The one exception is the **opt-in** `/aka:setup` calibration below: to rate what an initial history scan finds, its judge step sends those findings to the model API through the `claude` CLI — the same provider your Claude session already uses, reached with your own credentials. For each finding that means the raw (unmasked) value including any secret, roughly 120 characters of the surrounding transcript text on either side (re-scanned before it goes, so every secret the rules detect in that window is masked, including the finding's own value where it appears there), the finding's rule, category, severity, masked value and confidence, and a sequential counter the model echoes back so its verdict can be matched to the finding. The source file's path is not sent. It takes **two** separate opt-ins — one to read your history at all, and a second, distinct grant to send what was found — and without the second the judge does not run. It keeps those values out of your local Claude transcript, but a copy of them does leave the machine. Withdrawing either grant stops future scans; it cannot recall what was already sent.
12
+ [^egress]: Live detection and enforcement run locally, on every install and whatever else is configured. Two things can send anything off the machine, and both are opt-in. The first is the **opt-in** `/aka:setup` calibration below: to rate what an initial history scan finds, its judge step sends those findings to the model API through the `claude` CLI — the same provider your Claude session already uses, reached with your own credentials. For each finding that means the raw (unmasked) value including any secret, roughly 120 characters of the surrounding transcript text on either side (re-scanned before it goes, so every secret the rules detect in that window is masked, including the finding's own value where it appears there), the finding's rule, category, severity, masked value and confidence, and a sequential counter the model echoes back so its verdict can be matched to the finding. The source file's path is not sent. It takes **two** separate opt-ins — one to read your history at all, and a second, distinct grant to send what was found — and without the second the judge does not run. It keeps those values out of your local Claude transcript, but a copy of them does leave the machine. Withdrawing either grant stops future scans; it cannot recall what was already sent. The second is attaching this machine to an AKA deployment your organization runs (`aka attach`), after which the plugin forwards the activity that deployment is entitled to see and enforces the policy it sets — which can raise enforcement beyond your own settings but never lower it. Nothing is forwarded until both an endpoint and an access key are on disk; `aka status` says what a machine is attached to and `aka detach` ends it.
13
13
 
14
14
  The local store keeps your prompts and tool calls verbatim apart from the spans a rule masks, and file permissions — not encryption — are all that protect it. See [Data at rest](https://github.com/akasecurity/ai-tc/blob/main/SECURITY.md#data-at-rest) for which files it spans and what holds on Windows.
15
15
 
package/hooks/hooks.json CHANGED
@@ -67,6 +67,28 @@
67
67
  }
68
68
  ]
69
69
  }
70
+ ],
71
+ "PreModelSwitch": [
72
+ {
73
+ "hooks": [
74
+ {
75
+ "type": "command",
76
+ "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/pre-model-switch.js\"",
77
+ "timeout": 10
78
+ }
79
+ ]
80
+ }
81
+ ],
82
+ "PostModelSwitch": [
83
+ {
84
+ "hooks": [
85
+ {
86
+ "type": "command",
87
+ "command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/post-model-switch.js\"",
88
+ "timeout": 10
89
+ }
90
+ ]
91
+ }
70
92
  ]
71
93
  }
72
94
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akasecurity/ai-tc-claude-code",
3
- "version": "0.9.7",
3
+ "version": "0.9.9",
4
4
  "description": "AI Traffic Control — inspect and govern AI prompts in Claude Code",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -22,19 +22,19 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/node": "^24.13.3",
25
- "@vitest/coverage-v8": "^4.1.10",
25
+ "@vitest/coverage-v8": "^4.1.11",
26
26
  "eslint": "^9.39.5",
27
27
  "tsup": "^8.0.0",
28
28
  "typescript": "^5.8.0",
29
- "vitest": "^4.1.10",
30
- "zod": "^4.0.0",
29
+ "vitest": "^4.1.11",
30
+ "zod": "^4.5.4",
31
31
  "@akasecurity/eslint-config": "0.8.0",
32
32
  "@akasecurity/plugin-runtime": "0.8.0",
33
33
  "@akasecurity/persistence": "0.8.0",
34
34
  "@akasecurity/plugin-sdk": "0.8.0",
35
35
  "@akasecurity/schema": "0.8.0",
36
- "@akasecurity/setup-wizard": "0.8.0",
37
- "@akasecurity/scanner": "0.8.0"
36
+ "@akasecurity/scanner": "0.8.0",
37
+ "@akasecurity/setup-wizard": "0.8.0"
38
38
  },
39
39
  "scripts": {
40
40
  "build": "tsup",