sernixa-cli 0.4.2__tar.gz → 0.4.4__tar.gz
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.
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/PKG-INFO +80 -12
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/README.md +78 -10
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/pyproject.toml +16 -2
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli/__init__.py +1 -1
- sernixa_cli-0.4.4/sernixa_cli/claude_marketplace/.claude-plugin/marketplace.json +18 -0
- sernixa_cli-0.4.4/sernixa_cli/claude_marketplace/plugins/sernixa/.claude-plugin/plugin.json +17 -0
- sernixa_cli-0.4.4/sernixa_cli/claude_marketplace/plugins/sernixa/.mcp.json +11 -0
- sernixa_cli-0.4.4/sernixa_cli/claude_marketplace/plugins/sernixa/hooks/hooks.json +130 -0
- sernixa_cli-0.4.4/sernixa_cli/claude_marketplace/plugins/sernixa/skills/sernixa-protection/SKILL.md +19 -0
- sernixa_cli-0.4.4/sernixa_cli/claude_plugin.py +162 -0
- sernixa_cli-0.4.4/sernixa_cli/codex_marketplace/.agents/plugins/marketplace.json +20 -0
- sernixa_cli-0.4.4/sernixa_cli/codex_marketplace/plugins/sernixa/.codex-plugin/plugin.json +25 -0
- sernixa_cli-0.4.4/sernixa_cli/codex_marketplace/plugins/sernixa/.mcp.json +11 -0
- sernixa_cli-0.4.4/sernixa_cli/codex_marketplace/plugins/sernixa/hooks/hooks.json +95 -0
- sernixa_cli-0.4.4/sernixa_cli/codex_marketplace/plugins/sernixa/skills/sernixa-protection/SKILL.md +19 -0
- sernixa_cli-0.4.4/sernixa_cli/codex_plugin.py +158 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli/config.py +50 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli/local_agent_targets.py +92 -1
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli/main.py +435 -3
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli/mcp_server.py +41 -2
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli.egg-info/PKG-INFO +80 -12
- sernixa_cli-0.4.4/sernixa_cli.egg-info/SOURCES.txt +39 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli.egg-info/requires.txt +1 -1
- sernixa_cli-0.4.4/tests/test_claude_plugin.py +164 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/tests/test_cli.py +236 -2
- sernixa_cli-0.4.4/tests/test_codex_plugin.py +99 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/tests/test_mcp_server.py +99 -0
- sernixa_cli-0.4.2/sernixa_cli.egg-info/SOURCES.txt +0 -25
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli/__main__.py +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli/adapters.py +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli/discovery.py +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli/formatting.py +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli/hooks.py +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli/lifecycle.py +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli/native_launcher.py +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli.egg-info/dependency_links.txt +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli.egg-info/entry_points.txt +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/sernixa_cli.egg-info/top_level.txt +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/setup.cfg +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/tests/test_discovery.py +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/tests/test_local_agent_targets.py +0 -0
- {sernixa_cli-0.4.2 → sernixa_cli-0.4.4}/tests/test_native_launcher.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sernixa-cli
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.4
|
|
4
4
|
Summary: Official Sernixa CLI for policy-governed local AI agent actions
|
|
5
5
|
Author: Sernixa Team
|
|
6
6
|
License-Expression: MIT
|
|
@@ -22,7 +22,7 @@ Description-Content-Type: text/markdown
|
|
|
22
22
|
Requires-Dist: platformdirs>=4.0.0
|
|
23
23
|
Requires-Dist: prompt-toolkit>=3.0.48
|
|
24
24
|
Requires-Dist: rich>=13.8.0
|
|
25
|
-
Requires-Dist: sernixa>=0.4.
|
|
25
|
+
Requires-Dist: sernixa>=0.4.3
|
|
26
26
|
Requires-Dist: sernixa-agent>=1.6.1
|
|
27
27
|
Requires-Dist: typer>=0.12.0
|
|
28
28
|
|
|
@@ -37,8 +37,8 @@ macOS and Linux:
|
|
|
37
37
|
```bash
|
|
38
38
|
python3 -m pip install --upgrade sernixa-cli
|
|
39
39
|
sernixa auth login
|
|
40
|
-
sernixa
|
|
41
|
-
sernixa
|
|
40
|
+
sernixa protect
|
|
41
|
+
sernixa protect --status
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
Windows PowerShell:
|
|
@@ -46,8 +46,8 @@ Windows PowerShell:
|
|
|
46
46
|
```powershell
|
|
47
47
|
py -m pip install --upgrade sernixa-cli
|
|
48
48
|
sernixa auth login
|
|
49
|
-
sernixa
|
|
50
|
-
sernixa
|
|
49
|
+
sernixa protect
|
|
50
|
+
sernixa protect --status
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
`sernixa auth login` opens the Sernixa sign-in page, displays a short confirmation
|
|
@@ -74,6 +74,7 @@ Then run `sernixa` by itself to open the persistent governance console. Type
|
|
|
74
74
|
```text
|
|
75
75
|
sernixa › @status
|
|
76
76
|
sernixa › @discover
|
|
77
|
+
sernixa › @protect
|
|
77
78
|
sernixa › @integrations
|
|
78
79
|
sernixa › @events
|
|
79
80
|
sernixa › @approvals
|
|
@@ -82,7 +83,31 @@ sernixa › @exit
|
|
|
82
83
|
|
|
83
84
|
The console is project-aware, remains open across commands, supports tab completion and private local history, and dispatches only Sernixa commands. The palette shows only actions available on the authenticated plan; direct commands are still checked by the backend. `@` is the primary command-palette prefix and slash-prefixed forms remain compatible. Every normal command such as `validate request.json` also works inside it. Bare `sernixa` remains concise when stdout or stdin is not a terminal, so scripts and CI never hang; `sernixa shell` is the explicit interactive entry point.
|
|
84
85
|
|
|
85
|
-
`sernixa
|
|
86
|
+
`sernixa protect` is the recommended first run. It detects installed Codex,
|
|
87
|
+
Claude, and Cursor hosts, validates live organization policy access, installs
|
|
88
|
+
Sernixa as a first-class Codex and Claude Code plugin, configures the supported
|
|
89
|
+
Cursor boundary, and prints the actual coverage limitations instead of claiming
|
|
90
|
+
control over host events that were never emitted:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
sernixa protect
|
|
94
|
+
sernixa protect --status
|
|
95
|
+
sernixa protect --target codex --target claude
|
|
96
|
+
sernixa protect --dry-run --json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
After installation, restart open agent hosts. In Codex, open `/plugins`; in
|
|
100
|
+
Claude Code, open `/plugin`. Select **Sernixa Security** and trust its hook and
|
|
101
|
+
MCP server when prompted. Once each plugin is visible, Sernixa removes only its
|
|
102
|
+
own older standalone hook/MCP blocks (with backups), so the same enforcement
|
|
103
|
+
command is not registered twice.
|
|
104
|
+
The plugin still contains a hook because pre-tool blocking requires one; it is
|
|
105
|
+
owned and displayed as part of the plugin rather than user config.
|
|
106
|
+
`sernixa setup` remains
|
|
107
|
+
available for the broader developer setup, including Claude Desktop and the
|
|
108
|
+
bounded `sernixa://` dashboard launcher. It preserves unrelated entries, backs
|
|
109
|
+
up changed files, and reports host restart or hook-trust steps. Preview it
|
|
110
|
+
without changing files:
|
|
86
111
|
|
|
87
112
|
```bash
|
|
88
113
|
sernixa setup --dry-run
|
|
@@ -117,12 +142,28 @@ Discovery candidates are observations for review. Enrollment is inventory. An ac
|
|
|
117
142
|
|
|
118
143
|
Supported global targets:
|
|
119
144
|
|
|
120
|
-
- `claude`:
|
|
145
|
+
- `claude`: a visible **Sernixa Security** plugin containing enforcement/lifecycle hooks, the Sernixa MCP server, and a protection skill. Users can inspect it from `/plugin`.
|
|
121
146
|
- `claude-desktop`: real stdio MCP server in the OS-specific Claude Desktop configuration.
|
|
122
|
-
- `codex`:
|
|
147
|
+
- `codex`: a visible **Sernixa Security** plugin containing the enforcement hook, Sernixa MCP server, and protection skill. Users review/trust the plugin hook, and can inspect it from `/plugins`.
|
|
123
148
|
- `cursor`: global MCP entry in `~/.cursor/mcp.json`, shared by Cursor IDE and CLI.
|
|
124
149
|
|
|
125
|
-
|
|
150
|
+
`sernixa protect` is the supported automatic installer. Anyone can also add the
|
|
151
|
+
public repository marketplace directly:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
codex plugin marketplace add abhishekdhull63/Sernixa.ai-Web
|
|
155
|
+
codex plugin add sernixa@sernixa
|
|
156
|
+
|
|
157
|
+
claude plugin marketplace add abhishekdhull63/Sernixa.ai-Web
|
|
158
|
+
claude plugin install sernixa@sernixa --scope user
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Inside Claude Code, the equivalent interactive commands are
|
|
162
|
+
`/plugin marketplace add abhishekdhull63/Sernixa.ai-Web`,
|
|
163
|
+
`/plugin install sernixa@sernixa`, and `/reload-plugins`.
|
|
164
|
+
|
|
165
|
+
The legacy config installer remains available for Claude Desktop, Cursor, and
|
|
166
|
+
older host builds:
|
|
126
167
|
|
|
127
168
|
```bash
|
|
128
169
|
sernixa hook install claude
|
|
@@ -130,7 +171,7 @@ sernixa hook install claude-desktop
|
|
|
130
171
|
sernixa hook install codex
|
|
131
172
|
sernixa hook install cursor
|
|
132
173
|
|
|
133
|
-
sernixa hook repair
|
|
174
|
+
sernixa hook repair cursor
|
|
134
175
|
sernixa hook status
|
|
135
176
|
```
|
|
136
177
|
|
|
@@ -138,14 +179,41 @@ Claude Code and Codex hooks call `sernixa hook run <provider>` before tool execu
|
|
|
138
179
|
|
|
139
180
|
Hook handlers allow 35 seconds for the live policy request; the CLI request budget is 30 seconds. This prevents slow semantic evaluations from being killed by a shorter host-hook timeout.
|
|
140
181
|
|
|
141
|
-
Claude Code, Claude Desktop, Codex, and Cursor run `sernixa mcp serve`. The stdio MCP server exposes
|
|
182
|
+
Claude Code, Claude Desktop, Codex, and Cursor run `sernixa mcp serve`. The stdio MCP server exposes four non-mutating tools:
|
|
142
183
|
|
|
143
184
|
- `sernixa_policy_check`: evaluate one proposed action.
|
|
144
185
|
- `sernixa_plan_check`: evaluate a declared multi-step plan.
|
|
186
|
+
- `sernixa_execution_passport`: issue and persist a signed, exact-step Execution Passport for an allowed plan.
|
|
145
187
|
- `sernixa_identity`: validate auth and return non-secret principal metadata.
|
|
146
188
|
|
|
147
189
|
MCP tools provide explicit model capabilities; the installed hooks are the local tool-call enforcement points.
|
|
148
190
|
|
|
191
|
+
### Execution Passports
|
|
192
|
+
|
|
193
|
+
An approved plan is not a reusable local “allow.” Sernixa signs each exact
|
|
194
|
+
tool/action/arguments/resource binding, and the API atomically consumes the
|
|
195
|
+
matching proof once before execution. Changed arguments, undeclared tools,
|
|
196
|
+
expired tokens, and replayed steps fail closed.
|
|
197
|
+
|
|
198
|
+
Issue or inspect a passport directly:
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
sernixa passport issue --agent-type codex plan.json
|
|
202
|
+
sernixa passport status
|
|
203
|
+
sernixa passport clear
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
In Codex, Claude, Cursor, or another MCP host, ask the model to call
|
|
207
|
+
`sernixa_execution_passport` with its complete intended plan before it begins
|
|
208
|
+
tool use. The installed Codex/Claude pre-tool hook then consumes the matching
|
|
209
|
+
proof for each emitted tool event. The passport authorizes only the declared
|
|
210
|
+
steps; it never executes them and never bypasses native host permissions.
|
|
211
|
+
|
|
212
|
+
Coverage remains explicit: no integration can block a capability that the host
|
|
213
|
+
does not expose through a hook or MCP call. On current Codex Windows builds,
|
|
214
|
+
Sernixa remains available as a plugin and MCP policy/passport layer, while
|
|
215
|
+
pre-tool blocking depends on Codex adding Windows hook support.
|
|
216
|
+
|
|
149
217
|
## Governance and execution
|
|
150
218
|
|
|
151
219
|
```bash
|
|
@@ -9,8 +9,8 @@ macOS and Linux:
|
|
|
9
9
|
```bash
|
|
10
10
|
python3 -m pip install --upgrade sernixa-cli
|
|
11
11
|
sernixa auth login
|
|
12
|
-
sernixa
|
|
13
|
-
sernixa
|
|
12
|
+
sernixa protect
|
|
13
|
+
sernixa protect --status
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
Windows PowerShell:
|
|
@@ -18,8 +18,8 @@ Windows PowerShell:
|
|
|
18
18
|
```powershell
|
|
19
19
|
py -m pip install --upgrade sernixa-cli
|
|
20
20
|
sernixa auth login
|
|
21
|
-
sernixa
|
|
22
|
-
sernixa
|
|
21
|
+
sernixa protect
|
|
22
|
+
sernixa protect --status
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
`sernixa auth login` opens the Sernixa sign-in page, displays a short confirmation
|
|
@@ -46,6 +46,7 @@ Then run `sernixa` by itself to open the persistent governance console. Type
|
|
|
46
46
|
```text
|
|
47
47
|
sernixa › @status
|
|
48
48
|
sernixa › @discover
|
|
49
|
+
sernixa › @protect
|
|
49
50
|
sernixa › @integrations
|
|
50
51
|
sernixa › @events
|
|
51
52
|
sernixa › @approvals
|
|
@@ -54,7 +55,31 @@ sernixa › @exit
|
|
|
54
55
|
|
|
55
56
|
The console is project-aware, remains open across commands, supports tab completion and private local history, and dispatches only Sernixa commands. The palette shows only actions available on the authenticated plan; direct commands are still checked by the backend. `@` is the primary command-palette prefix and slash-prefixed forms remain compatible. Every normal command such as `validate request.json` also works inside it. Bare `sernixa` remains concise when stdout or stdin is not a terminal, so scripts and CI never hang; `sernixa shell` is the explicit interactive entry point.
|
|
56
57
|
|
|
57
|
-
`sernixa
|
|
58
|
+
`sernixa protect` is the recommended first run. It detects installed Codex,
|
|
59
|
+
Claude, and Cursor hosts, validates live organization policy access, installs
|
|
60
|
+
Sernixa as a first-class Codex and Claude Code plugin, configures the supported
|
|
61
|
+
Cursor boundary, and prints the actual coverage limitations instead of claiming
|
|
62
|
+
control over host events that were never emitted:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
sernixa protect
|
|
66
|
+
sernixa protect --status
|
|
67
|
+
sernixa protect --target codex --target claude
|
|
68
|
+
sernixa protect --dry-run --json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
After installation, restart open agent hosts. In Codex, open `/plugins`; in
|
|
72
|
+
Claude Code, open `/plugin`. Select **Sernixa Security** and trust its hook and
|
|
73
|
+
MCP server when prompted. Once each plugin is visible, Sernixa removes only its
|
|
74
|
+
own older standalone hook/MCP blocks (with backups), so the same enforcement
|
|
75
|
+
command is not registered twice.
|
|
76
|
+
The plugin still contains a hook because pre-tool blocking requires one; it is
|
|
77
|
+
owned and displayed as part of the plugin rather than user config.
|
|
78
|
+
`sernixa setup` remains
|
|
79
|
+
available for the broader developer setup, including Claude Desktop and the
|
|
80
|
+
bounded `sernixa://` dashboard launcher. It preserves unrelated entries, backs
|
|
81
|
+
up changed files, and reports host restart or hook-trust steps. Preview it
|
|
82
|
+
without changing files:
|
|
58
83
|
|
|
59
84
|
```bash
|
|
60
85
|
sernixa setup --dry-run
|
|
@@ -89,12 +114,28 @@ Discovery candidates are observations for review. Enrollment is inventory. An ac
|
|
|
89
114
|
|
|
90
115
|
Supported global targets:
|
|
91
116
|
|
|
92
|
-
- `claude`:
|
|
117
|
+
- `claude`: a visible **Sernixa Security** plugin containing enforcement/lifecycle hooks, the Sernixa MCP server, and a protection skill. Users can inspect it from `/plugin`.
|
|
93
118
|
- `claude-desktop`: real stdio MCP server in the OS-specific Claude Desktop configuration.
|
|
94
|
-
- `codex`:
|
|
119
|
+
- `codex`: a visible **Sernixa Security** plugin containing the enforcement hook, Sernixa MCP server, and protection skill. Users review/trust the plugin hook, and can inspect it from `/plugins`.
|
|
95
120
|
- `cursor`: global MCP entry in `~/.cursor/mcp.json`, shared by Cursor IDE and CLI.
|
|
96
121
|
|
|
97
|
-
|
|
122
|
+
`sernixa protect` is the supported automatic installer. Anyone can also add the
|
|
123
|
+
public repository marketplace directly:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
codex plugin marketplace add abhishekdhull63/Sernixa.ai-Web
|
|
127
|
+
codex plugin add sernixa@sernixa
|
|
128
|
+
|
|
129
|
+
claude plugin marketplace add abhishekdhull63/Sernixa.ai-Web
|
|
130
|
+
claude plugin install sernixa@sernixa --scope user
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Inside Claude Code, the equivalent interactive commands are
|
|
134
|
+
`/plugin marketplace add abhishekdhull63/Sernixa.ai-Web`,
|
|
135
|
+
`/plugin install sernixa@sernixa`, and `/reload-plugins`.
|
|
136
|
+
|
|
137
|
+
The legacy config installer remains available for Claude Desktop, Cursor, and
|
|
138
|
+
older host builds:
|
|
98
139
|
|
|
99
140
|
```bash
|
|
100
141
|
sernixa hook install claude
|
|
@@ -102,7 +143,7 @@ sernixa hook install claude-desktop
|
|
|
102
143
|
sernixa hook install codex
|
|
103
144
|
sernixa hook install cursor
|
|
104
145
|
|
|
105
|
-
sernixa hook repair
|
|
146
|
+
sernixa hook repair cursor
|
|
106
147
|
sernixa hook status
|
|
107
148
|
```
|
|
108
149
|
|
|
@@ -110,14 +151,41 @@ Claude Code and Codex hooks call `sernixa hook run <provider>` before tool execu
|
|
|
110
151
|
|
|
111
152
|
Hook handlers allow 35 seconds for the live policy request; the CLI request budget is 30 seconds. This prevents slow semantic evaluations from being killed by a shorter host-hook timeout.
|
|
112
153
|
|
|
113
|
-
Claude Code, Claude Desktop, Codex, and Cursor run `sernixa mcp serve`. The stdio MCP server exposes
|
|
154
|
+
Claude Code, Claude Desktop, Codex, and Cursor run `sernixa mcp serve`. The stdio MCP server exposes four non-mutating tools:
|
|
114
155
|
|
|
115
156
|
- `sernixa_policy_check`: evaluate one proposed action.
|
|
116
157
|
- `sernixa_plan_check`: evaluate a declared multi-step plan.
|
|
158
|
+
- `sernixa_execution_passport`: issue and persist a signed, exact-step Execution Passport for an allowed plan.
|
|
117
159
|
- `sernixa_identity`: validate auth and return non-secret principal metadata.
|
|
118
160
|
|
|
119
161
|
MCP tools provide explicit model capabilities; the installed hooks are the local tool-call enforcement points.
|
|
120
162
|
|
|
163
|
+
### Execution Passports
|
|
164
|
+
|
|
165
|
+
An approved plan is not a reusable local “allow.” Sernixa signs each exact
|
|
166
|
+
tool/action/arguments/resource binding, and the API atomically consumes the
|
|
167
|
+
matching proof once before execution. Changed arguments, undeclared tools,
|
|
168
|
+
expired tokens, and replayed steps fail closed.
|
|
169
|
+
|
|
170
|
+
Issue or inspect a passport directly:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
sernixa passport issue --agent-type codex plan.json
|
|
174
|
+
sernixa passport status
|
|
175
|
+
sernixa passport clear
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
In Codex, Claude, Cursor, or another MCP host, ask the model to call
|
|
179
|
+
`sernixa_execution_passport` with its complete intended plan before it begins
|
|
180
|
+
tool use. The installed Codex/Claude pre-tool hook then consumes the matching
|
|
181
|
+
proof for each emitted tool event. The passport authorizes only the declared
|
|
182
|
+
steps; it never executes them and never bypasses native host permissions.
|
|
183
|
+
|
|
184
|
+
Coverage remains explicit: no integration can block a capability that the host
|
|
185
|
+
does not expose through a hook or MCP call. On current Codex Windows builds,
|
|
186
|
+
Sernixa remains available as a plugin and MCP policy/passport layer, while
|
|
187
|
+
pre-tool blocking depends on Codex adding Windows hook support.
|
|
188
|
+
|
|
121
189
|
## Governance and execution
|
|
122
190
|
|
|
123
191
|
```bash
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sernixa-cli"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.4"
|
|
4
4
|
description = "Official Sernixa CLI for policy-governed local AI agent actions"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -21,7 +21,7 @@ dependencies = [
|
|
|
21
21
|
"platformdirs>=4.0.0",
|
|
22
22
|
"prompt-toolkit>=3.0.48",
|
|
23
23
|
"rich>=13.8.0",
|
|
24
|
-
"sernixa>=0.4.
|
|
24
|
+
"sernixa>=0.4.3",
|
|
25
25
|
"sernixa-agent>=1.6.1",
|
|
26
26
|
"typer>=0.12.0",
|
|
27
27
|
]
|
|
@@ -42,6 +42,20 @@ build-backend = "setuptools.build_meta"
|
|
|
42
42
|
[tool.setuptools.packages.find]
|
|
43
43
|
include = ["sernixa_cli*"]
|
|
44
44
|
|
|
45
|
+
[tool.setuptools.package-data]
|
|
46
|
+
sernixa_cli = [
|
|
47
|
+
"claude_marketplace/.claude-plugin/marketplace.json",
|
|
48
|
+
"claude_marketplace/plugins/sernixa/.claude-plugin/plugin.json",
|
|
49
|
+
"claude_marketplace/plugins/sernixa/.mcp.json",
|
|
50
|
+
"claude_marketplace/plugins/sernixa/hooks/hooks.json",
|
|
51
|
+
"claude_marketplace/plugins/sernixa/skills/sernixa-protection/SKILL.md",
|
|
52
|
+
"codex_marketplace/.agents/plugins/marketplace.json",
|
|
53
|
+
"codex_marketplace/plugins/sernixa/.codex-plugin/plugin.json",
|
|
54
|
+
"codex_marketplace/plugins/sernixa/.mcp.json",
|
|
55
|
+
"codex_marketplace/plugins/sernixa/hooks/hooks.json",
|
|
56
|
+
"codex_marketplace/plugins/sernixa/skills/sernixa-protection/SKILL.md",
|
|
57
|
+
]
|
|
58
|
+
|
|
45
59
|
[tool.pytest.ini_options]
|
|
46
60
|
testpaths = ["tests"]
|
|
47
61
|
pythonpath = ["."]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
|
|
3
|
+
"name": "sernixa",
|
|
4
|
+
"version": "0.4.4",
|
|
5
|
+
"description": "Sernixa policy enforcement and signed Execution Passports for AI agent actions.",
|
|
6
|
+
"owner": {
|
|
7
|
+
"name": "Sernixa Team"
|
|
8
|
+
},
|
|
9
|
+
"plugins": [
|
|
10
|
+
{
|
|
11
|
+
"name": "sernixa",
|
|
12
|
+
"description": "Govern Claude actions with live organization policy and one-time exact-step proofs.",
|
|
13
|
+
"version": "0.4.4",
|
|
14
|
+
"source": "./plugins/sernixa",
|
|
15
|
+
"category": "security"
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
|
+
"name": "sernixa",
|
|
4
|
+
"displayName": "Sernixa Security",
|
|
5
|
+
"version": "0.4.4",
|
|
6
|
+
"description": "Server-authoritative policy and signed, one-time Execution Passports for Claude Code.",
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "Sernixa Team",
|
|
9
|
+
"url": "https://sernixa.com"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://sernixa.com",
|
|
12
|
+
"repository": "https://github.com/abhishekdhull63/Sernixa.ai-Web",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"keywords": ["ai-security", "governance", "policy", "execution-passport"],
|
|
15
|
+
"skills": "./skills/",
|
|
16
|
+
"mcpServers": "./.mcp.json"
|
|
17
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "startup|resume|clear|compact",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "sernixa hook run claude",
|
|
10
|
+
"timeout": 35
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"UserPromptSubmit": [
|
|
16
|
+
{
|
|
17
|
+
"hooks": [
|
|
18
|
+
{
|
|
19
|
+
"type": "command",
|
|
20
|
+
"command": "sernixa hook run claude",
|
|
21
|
+
"timeout": 35
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"PreToolUse": [
|
|
27
|
+
{
|
|
28
|
+
"matcher": "*",
|
|
29
|
+
"hooks": [
|
|
30
|
+
{
|
|
31
|
+
"type": "command",
|
|
32
|
+
"command": "sernixa hook run claude",
|
|
33
|
+
"timeout": 35,
|
|
34
|
+
"statusMessage": "Checking Sernixa policy and Execution Passport"
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"PostToolUse": [
|
|
40
|
+
{
|
|
41
|
+
"matcher": "*",
|
|
42
|
+
"hooks": [
|
|
43
|
+
{
|
|
44
|
+
"type": "command",
|
|
45
|
+
"command": "sernixa hook run claude",
|
|
46
|
+
"timeout": 35
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"PostToolUseFailure": [
|
|
52
|
+
{
|
|
53
|
+
"matcher": "*",
|
|
54
|
+
"hooks": [
|
|
55
|
+
{
|
|
56
|
+
"type": "command",
|
|
57
|
+
"command": "sernixa hook run claude",
|
|
58
|
+
"timeout": 35
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"SubagentStart": [
|
|
64
|
+
{
|
|
65
|
+
"hooks": [
|
|
66
|
+
{
|
|
67
|
+
"type": "command",
|
|
68
|
+
"command": "sernixa hook run claude",
|
|
69
|
+
"timeout": 35
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"SubagentStop": [
|
|
75
|
+
{
|
|
76
|
+
"hooks": [
|
|
77
|
+
{
|
|
78
|
+
"type": "command",
|
|
79
|
+
"command": "sernixa hook run claude",
|
|
80
|
+
"timeout": 35
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
"PreCompact": [
|
|
86
|
+
{
|
|
87
|
+
"hooks": [
|
|
88
|
+
{
|
|
89
|
+
"type": "command",
|
|
90
|
+
"command": "sernixa hook run claude",
|
|
91
|
+
"timeout": 35
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
],
|
|
96
|
+
"PostCompact": [
|
|
97
|
+
{
|
|
98
|
+
"hooks": [
|
|
99
|
+
{
|
|
100
|
+
"type": "command",
|
|
101
|
+
"command": "sernixa hook run claude",
|
|
102
|
+
"timeout": 35
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
"Stop": [
|
|
108
|
+
{
|
|
109
|
+
"hooks": [
|
|
110
|
+
{
|
|
111
|
+
"type": "command",
|
|
112
|
+
"command": "sernixa hook run claude",
|
|
113
|
+
"timeout": 35
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"SessionEnd": [
|
|
119
|
+
{
|
|
120
|
+
"hooks": [
|
|
121
|
+
{
|
|
122
|
+
"type": "command",
|
|
123
|
+
"command": "sernixa hook run claude",
|
|
124
|
+
"timeout": 35
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
}
|
sernixa_cli-0.4.4/sernixa_cli/claude_marketplace/plugins/sernixa/skills/sernixa-protection/SKILL.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sernixa-protection
|
|
3
|
+
description: Use when a Claude plan should be checked and bound to Sernixa policy before tool execution, or when explaining a Sernixa denial.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sernixa protection
|
|
7
|
+
|
|
8
|
+
Before a multi-step tool workflow:
|
|
9
|
+
|
|
10
|
+
1. Call `sernixa_identity` to verify the active organization context.
|
|
11
|
+
2. Build exact steps with `tool_name`, canonical `action`, `arguments`, and
|
|
12
|
+
`resource`.
|
|
13
|
+
3. Call `sernixa_execution_passport` once with the complete plan.
|
|
14
|
+
4. Do not change tool arguments after the passport is issued. If the plan
|
|
15
|
+
changes, issue a new passport.
|
|
16
|
+
5. Treat any missing, expired, replayed, or mismatched proof as blocked.
|
|
17
|
+
|
|
18
|
+
Sernixa policy never replaces Claude permissions or user approval. Both
|
|
19
|
+
boundaries must allow the action.
|