@akasecurity/ai-tc-claude-code 0.9.6 → 0.9.8

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.6",
3
+ "version": "0.9.8",
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/commands/setup.md CHANGED
@@ -892,26 +892,3 @@ declined, or a failed install you already reported — end with one warm close:
892
892
 
893
893
  Before you finish, confirm every AKA_SHOW region on the path you took was
894
894
  relayed to the user. If you summarized one instead of pasting it, paste it now.
895
-
896
- ## Known limitations
897
-
898
- Be honest about every one of these if the user asks why something wasn't caught
899
- — never imply coverage this plugin does not have.
900
-
901
- **The model-judge step in step 3 cannot run on native Windows.** The judge
902
- spawns the `claude` CLI through a shell-free `execFileSync`, and an
903
- npm-installed CLI is a `.cmd` shim on Windows, which Node has refused to spawn
904
- without a shell since the CVE-2024-27980 fix. So a user who grants model-judge
905
- consent gets a spawn failure at that step rather than a rated set of findings,
906
- and the step exits non-zero instead of completing. Everything before it is
907
- unaffected — the posture check, the consent-gated historical read, and the local
908
- ruleset scan all run, and every finding is still detected and redacted locally.
909
- What is unavailable is only the model pass that rates false positives and
910
- severity.
911
-
912
- Say this plainly if a Windows user asks why setup stopped there, and do not
913
- offer to retry it: the fix is a code change, tracked separately. Two things
914
- worth getting right if it comes up — running under WSL2 is Linux rather than
915
- Windows and is not affected, and declining model-judge consent in step 1 is not
916
- a workaround so much as the other supported path, since the local scan is what
917
- produces the findings in the first place.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akasecurity/ai-tc-claude-code",
3
- "version": "0.9.6",
3
+ "version": "0.9.8",
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,17 +22,18 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/node": "^24.13.3",
25
- "eslint": "^9.0.0",
25
+ "@vitest/coverage-v8": "^4.1.10",
26
+ "eslint": "^9.39.5",
26
27
  "tsup": "^8.0.0",
27
28
  "typescript": "^5.8.0",
28
29
  "vitest": "^4.1.10",
29
30
  "zod": "^4.0.0",
30
- "@akasecurity/eslint-config": "0.8.0",
31
31
  "@akasecurity/persistence": "0.8.0",
32
- "@akasecurity/plugin-sdk": "0.8.0",
32
+ "@akasecurity/eslint-config": "0.8.0",
33
33
  "@akasecurity/scanner": "0.8.0",
34
- "@akasecurity/schema": "0.8.0",
35
34
  "@akasecurity/plugin-runtime": "0.8.0",
35
+ "@akasecurity/plugin-sdk": "0.8.0",
36
+ "@akasecurity/schema": "0.8.0",
36
37
  "@akasecurity/setup-wizard": "0.8.0"
37
38
  },
38
39
  "scripts": {