atbash-hermes-plugin 0.4.5.dev1__tar.gz → 0.4.6.dev1__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.
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/PKG-INFO +43 -33
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/README.md +41 -31
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/atbash_hermes_plugin/__init__.py +4 -1
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/atbash_hermes_plugin.egg-info/PKG-INFO +43 -33
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/atbash_hermes_plugin.egg-info/requires.txt +1 -1
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/pyproject.toml +2 -2
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/LICENSE +0 -0
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/atbash_hermes_plugin.egg-info/SOURCES.txt +0 -0
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/atbash_hermes_plugin.egg-info/dependency_links.txt +0 -0
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/atbash_hermes_plugin.egg-info/entry_points.txt +0 -0
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/atbash_hermes_plugin.egg-info/top_level.txt +0 -0
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/setup.cfg +0 -0
- {atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/tests/test_memory_poisoning.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atbash-hermes-plugin
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.6.dev1
|
|
4
4
|
Summary: Atbash safety plugin for Hermes Agent
|
|
5
5
|
Author: atbash
|
|
6
6
|
License-Expression: LicenseRef-Atbash-Proprietary
|
|
@@ -10,7 +10,7 @@ Keywords: atbash,hermes,hermes-agent,agent-safety,ai-safety,tool-guard,judge,pol
|
|
|
10
10
|
Requires-Python: <3.13,>=3.9
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
12
|
License-File: LICENSE
|
|
13
|
-
Requires-Dist: atbash-sdk==0.4.
|
|
13
|
+
Requires-Dist: atbash-sdk==0.4.7.dev0
|
|
14
14
|
Requires-Dist: httpx<1,>=0.27
|
|
15
15
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http<2,>=1.29
|
|
16
16
|
Requires-Dist: opentelemetry-sdk<2,>=1.29
|
|
@@ -30,24 +30,38 @@ stopped before execution.
|
|
|
30
30
|
- Intercepts Hermes tool calls through `pre_tool_call`.
|
|
31
31
|
- Sends the tool name, arguments, command-like payload, session metadata, and
|
|
32
32
|
inferred action class to Atbash.
|
|
33
|
-
- Blocks tool execution on `BLOCK`, `DENY`, `REJECT`, `DISALLOW
|
|
33
|
+
- Blocks tool execution on `BLOCK`, `DENY`, `REJECT`, or `DISALLOW`; holds it for operator review on `HOLD`.
|
|
34
34
|
- Persists learned Hermes tool classifications across sessions.
|
|
35
35
|
|
|
36
36
|
## Install
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
Hermes manages its own Python environment. Install the plugin directly into it —
|
|
39
|
+
do **not** use your system `pip` — on macOS and some Linux distros it will be blocked by the OS.
|
|
40
|
+
|
|
41
|
+
**If you installed Hermes via the official install script (`curl … | bash`):**
|
|
40
42
|
|
|
41
43
|
```bash
|
|
42
|
-
|
|
44
|
+
~/.hermes/hermes-agent/venv/bin/pip3 install atbash-hermes-plugin
|
|
43
45
|
```
|
|
44
46
|
|
|
45
|
-
If
|
|
47
|
+
**If you installed Hermes via `uv`:**
|
|
46
48
|
|
|
47
49
|
```bash
|
|
48
|
-
/
|
|
50
|
+
uv pip install --python ~/.hermes/hermes-agent/venv/bin/python atbash-hermes-plugin
|
|
49
51
|
```
|
|
50
52
|
|
|
53
|
+
To install the latest dev release, add `--pre` (pip) or `--prerelease=allow` (uv):
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# pip
|
|
57
|
+
~/.hermes/hermes-agent/venv/bin/pip3 install --pre atbash-hermes-plugin
|
|
58
|
+
|
|
59
|
+
# uv
|
|
60
|
+
uv pip install --python ~/.hermes/hermes-agent/venv/bin/python --prerelease=allow atbash-hermes-plugin
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
No further activation step is needed — Hermes discovers the plugin automatically on next start.
|
|
64
|
+
|
|
51
65
|
## Configure Atbash
|
|
52
66
|
|
|
53
67
|
The plugin needs an Atbash agent key. Configure either `ATBASH_KEY_PATH` or
|
|
@@ -56,10 +70,10 @@ The plugin needs an Atbash agent key. Configure either `ATBASH_KEY_PATH` or
|
|
|
56
70
|
Recommended:
|
|
57
71
|
|
|
58
72
|
```bash
|
|
59
|
-
ATBASH_KEY_PATH
|
|
73
|
+
ATBASH_KEY_PATH=~/.config/atbash/guard-client-key
|
|
60
74
|
```
|
|
61
75
|
|
|
62
|
-
Alternative:
|
|
76
|
+
Alternative (paste the key JSON directly):
|
|
63
77
|
|
|
64
78
|
```bash
|
|
65
79
|
ATBASH_AGENT_PRIVKEY='{"pubkey":"...","privkey":"..."}'
|
|
@@ -67,7 +81,7 @@ ATBASH_AGENT_PRIVKEY='{"pubkey":"...","privkey":"..."}'
|
|
|
67
81
|
|
|
68
82
|
## Where To Set Environment Variables
|
|
69
83
|
|
|
70
|
-
Hermes
|
|
84
|
+
Hermes loads environment variables from `~/.hermes/.env`.
|
|
71
85
|
|
|
72
86
|
Create or edit that file:
|
|
73
87
|
|
|
@@ -78,7 +92,7 @@ nano ~/.hermes/.env
|
|
|
78
92
|
Add:
|
|
79
93
|
|
|
80
94
|
```bash
|
|
81
|
-
ATBASH_KEY_PATH
|
|
95
|
+
ATBASH_KEY_PATH=~/.config/atbash/guard-client-key
|
|
82
96
|
ATBASH_ENFORCE_DECISION=true
|
|
83
97
|
ATBASH_DEBUG=false
|
|
84
98
|
ATBASH_ORG_NAME=your-org-name
|
|
@@ -118,7 +132,11 @@ ATBASH_DEBUG=false
|
|
|
118
132
|
ATBASH_ORG_NAME=your-org-name
|
|
119
133
|
|
|
120
134
|
# Override where learned Hermes tool classifications are saved.
|
|
121
|
-
ATBASH_TOOL_MAP_PATH
|
|
135
|
+
ATBASH_TOOL_MAP_PATH=~/.config/atbash/hermes-tool-map.json
|
|
136
|
+
|
|
137
|
+
# HTTP request timeout in seconds for judge API calls. Default: 30.
|
|
138
|
+
# Raise this if you see "read operation timed out" errors on a slow endpoint.
|
|
139
|
+
ATBASH_REQUEST_TIMEOUT=30
|
|
122
140
|
```
|
|
123
141
|
|
|
124
142
|
## Telemetry
|
|
@@ -136,19 +154,13 @@ printf '{"enabled": false}\n' > ~/.config/atbash/telemetry.json
|
|
|
136
154
|
|
|
137
155
|
## Enable Or Check The Plugin
|
|
138
156
|
|
|
139
|
-
Hermes
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
Check whether Hermes sees the plugin:
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
hermes plugins list | grep atbash
|
|
146
|
-
```
|
|
157
|
+
Hermes discovers the plugin automatically via Python entry points — no manual
|
|
158
|
+
enable step is needed. Restarting Hermes after installation is sufficient.
|
|
147
159
|
|
|
148
|
-
|
|
160
|
+
To confirm the package is installed in the right environment:
|
|
149
161
|
|
|
150
162
|
```bash
|
|
151
|
-
hermes
|
|
163
|
+
~/.hermes/hermes-agent/venv/bin/pip3 show atbash-hermes-plugin
|
|
152
164
|
```
|
|
153
165
|
|
|
154
166
|
## Verify It Is Working
|
|
@@ -159,7 +171,7 @@ file or opening a website.
|
|
|
159
171
|
In another terminal, watch the Hermes log:
|
|
160
172
|
|
|
161
173
|
```bash
|
|
162
|
-
tail -f ~/.hermes/logs/agent.log
|
|
174
|
+
tail -f ~/.hermes/logs/agent.log | grep -i atbash
|
|
163
175
|
```
|
|
164
176
|
|
|
165
177
|
With `ATBASH_DEBUG=true`, you should see lines similar to:
|
|
@@ -254,26 +266,24 @@ user to retry after review, rather than automatically re-running the action.
|
|
|
254
266
|
|
|
255
267
|
## Troubleshooting
|
|
256
268
|
|
|
257
|
-
If
|
|
269
|
+
If the plugin is not being picked up, confirm it is installed in the Hermes
|
|
270
|
+
environment (not the system Python):
|
|
258
271
|
|
|
259
272
|
```bash
|
|
260
|
-
hermes
|
|
261
|
-
python -m pip show atbash-hermes-plugin
|
|
273
|
+
~/.hermes/hermes-agent/venv/bin/pip3 show atbash-hermes-plugin
|
|
262
274
|
```
|
|
263
275
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
If Atbash verdicts are not appearing in logs:
|
|
276
|
+
If Atbash verdicts are not appearing in logs, enable debug mode by adding this
|
|
277
|
+
to `~/.hermes/.env`:
|
|
268
278
|
|
|
269
279
|
```bash
|
|
270
280
|
ATBASH_DEBUG=true
|
|
271
281
|
```
|
|
272
282
|
|
|
273
|
-
Then restart Hermes and watch:
|
|
283
|
+
Then restart Hermes and watch in a second terminal:
|
|
274
284
|
|
|
275
285
|
```bash
|
|
276
|
-
tail -f ~/.hermes/logs/agent.log
|
|
286
|
+
tail -f ~/.hermes/logs/agent.log | grep -i atbash
|
|
277
287
|
```
|
|
278
288
|
|
|
279
289
|
If the plugin blocks everything with an unavailable-key or authentication error,
|
|
@@ -12,24 +12,38 @@ stopped before execution.
|
|
|
12
12
|
- Intercepts Hermes tool calls through `pre_tool_call`.
|
|
13
13
|
- Sends the tool name, arguments, command-like payload, session metadata, and
|
|
14
14
|
inferred action class to Atbash.
|
|
15
|
-
- Blocks tool execution on `BLOCK`, `DENY`, `REJECT`, `DISALLOW
|
|
15
|
+
- Blocks tool execution on `BLOCK`, `DENY`, `REJECT`, or `DISALLOW`; holds it for operator review on `HOLD`.
|
|
16
16
|
- Persists learned Hermes tool classifications across sessions.
|
|
17
17
|
|
|
18
18
|
## Install
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
Hermes manages its own Python environment. Install the plugin directly into it —
|
|
21
|
+
do **not** use your system `pip` — on macOS and some Linux distros it will be blocked by the OS.
|
|
22
|
+
|
|
23
|
+
**If you installed Hermes via the official install script (`curl … | bash`):**
|
|
22
24
|
|
|
23
25
|
```bash
|
|
24
|
-
|
|
26
|
+
~/.hermes/hermes-agent/venv/bin/pip3 install atbash-hermes-plugin
|
|
25
27
|
```
|
|
26
28
|
|
|
27
|
-
If
|
|
29
|
+
**If you installed Hermes via `uv`:**
|
|
28
30
|
|
|
29
31
|
```bash
|
|
30
|
-
/
|
|
32
|
+
uv pip install --python ~/.hermes/hermes-agent/venv/bin/python atbash-hermes-plugin
|
|
31
33
|
```
|
|
32
34
|
|
|
35
|
+
To install the latest dev release, add `--pre` (pip) or `--prerelease=allow` (uv):
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# pip
|
|
39
|
+
~/.hermes/hermes-agent/venv/bin/pip3 install --pre atbash-hermes-plugin
|
|
40
|
+
|
|
41
|
+
# uv
|
|
42
|
+
uv pip install --python ~/.hermes/hermes-agent/venv/bin/python --prerelease=allow atbash-hermes-plugin
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
No further activation step is needed — Hermes discovers the plugin automatically on next start.
|
|
46
|
+
|
|
33
47
|
## Configure Atbash
|
|
34
48
|
|
|
35
49
|
The plugin needs an Atbash agent key. Configure either `ATBASH_KEY_PATH` or
|
|
@@ -38,10 +52,10 @@ The plugin needs an Atbash agent key. Configure either `ATBASH_KEY_PATH` or
|
|
|
38
52
|
Recommended:
|
|
39
53
|
|
|
40
54
|
```bash
|
|
41
|
-
ATBASH_KEY_PATH
|
|
55
|
+
ATBASH_KEY_PATH=~/.config/atbash/guard-client-key
|
|
42
56
|
```
|
|
43
57
|
|
|
44
|
-
Alternative:
|
|
58
|
+
Alternative (paste the key JSON directly):
|
|
45
59
|
|
|
46
60
|
```bash
|
|
47
61
|
ATBASH_AGENT_PRIVKEY='{"pubkey":"...","privkey":"..."}'
|
|
@@ -49,7 +63,7 @@ ATBASH_AGENT_PRIVKEY='{"pubkey":"...","privkey":"..."}'
|
|
|
49
63
|
|
|
50
64
|
## Where To Set Environment Variables
|
|
51
65
|
|
|
52
|
-
Hermes
|
|
66
|
+
Hermes loads environment variables from `~/.hermes/.env`.
|
|
53
67
|
|
|
54
68
|
Create or edit that file:
|
|
55
69
|
|
|
@@ -60,7 +74,7 @@ nano ~/.hermes/.env
|
|
|
60
74
|
Add:
|
|
61
75
|
|
|
62
76
|
```bash
|
|
63
|
-
ATBASH_KEY_PATH
|
|
77
|
+
ATBASH_KEY_PATH=~/.config/atbash/guard-client-key
|
|
64
78
|
ATBASH_ENFORCE_DECISION=true
|
|
65
79
|
ATBASH_DEBUG=false
|
|
66
80
|
ATBASH_ORG_NAME=your-org-name
|
|
@@ -100,7 +114,11 @@ ATBASH_DEBUG=false
|
|
|
100
114
|
ATBASH_ORG_NAME=your-org-name
|
|
101
115
|
|
|
102
116
|
# Override where learned Hermes tool classifications are saved.
|
|
103
|
-
ATBASH_TOOL_MAP_PATH
|
|
117
|
+
ATBASH_TOOL_MAP_PATH=~/.config/atbash/hermes-tool-map.json
|
|
118
|
+
|
|
119
|
+
# HTTP request timeout in seconds for judge API calls. Default: 30.
|
|
120
|
+
# Raise this if you see "read operation timed out" errors on a slow endpoint.
|
|
121
|
+
ATBASH_REQUEST_TIMEOUT=30
|
|
104
122
|
```
|
|
105
123
|
|
|
106
124
|
## Telemetry
|
|
@@ -118,19 +136,13 @@ printf '{"enabled": false}\n' > ~/.config/atbash/telemetry.json
|
|
|
118
136
|
|
|
119
137
|
## Enable Or Check The Plugin
|
|
120
138
|
|
|
121
|
-
Hermes
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
Check whether Hermes sees the plugin:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
hermes plugins list | grep atbash
|
|
128
|
-
```
|
|
139
|
+
Hermes discovers the plugin automatically via Python entry points — no manual
|
|
140
|
+
enable step is needed. Restarting Hermes after installation is sufficient.
|
|
129
141
|
|
|
130
|
-
|
|
142
|
+
To confirm the package is installed in the right environment:
|
|
131
143
|
|
|
132
144
|
```bash
|
|
133
|
-
hermes
|
|
145
|
+
~/.hermes/hermes-agent/venv/bin/pip3 show atbash-hermes-plugin
|
|
134
146
|
```
|
|
135
147
|
|
|
136
148
|
## Verify It Is Working
|
|
@@ -141,7 +153,7 @@ file or opening a website.
|
|
|
141
153
|
In another terminal, watch the Hermes log:
|
|
142
154
|
|
|
143
155
|
```bash
|
|
144
|
-
tail -f ~/.hermes/logs/agent.log
|
|
156
|
+
tail -f ~/.hermes/logs/agent.log | grep -i atbash
|
|
145
157
|
```
|
|
146
158
|
|
|
147
159
|
With `ATBASH_DEBUG=true`, you should see lines similar to:
|
|
@@ -236,26 +248,24 @@ user to retry after review, rather than automatically re-running the action.
|
|
|
236
248
|
|
|
237
249
|
## Troubleshooting
|
|
238
250
|
|
|
239
|
-
If
|
|
251
|
+
If the plugin is not being picked up, confirm it is installed in the Hermes
|
|
252
|
+
environment (not the system Python):
|
|
240
253
|
|
|
241
254
|
```bash
|
|
242
|
-
hermes
|
|
243
|
-
python -m pip show atbash-hermes-plugin
|
|
255
|
+
~/.hermes/hermes-agent/venv/bin/pip3 show atbash-hermes-plugin
|
|
244
256
|
```
|
|
245
257
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
If Atbash verdicts are not appearing in logs:
|
|
258
|
+
If Atbash verdicts are not appearing in logs, enable debug mode by adding this
|
|
259
|
+
to `~/.hermes/.env`:
|
|
250
260
|
|
|
251
261
|
```bash
|
|
252
262
|
ATBASH_DEBUG=true
|
|
253
263
|
```
|
|
254
264
|
|
|
255
|
-
Then restart Hermes and watch:
|
|
265
|
+
Then restart Hermes and watch in a second terminal:
|
|
256
266
|
|
|
257
267
|
```bash
|
|
258
|
-
tail -f ~/.hermes/logs/agent.log
|
|
268
|
+
tail -f ~/.hermes/logs/agent.log | grep -i atbash
|
|
259
269
|
```
|
|
260
270
|
|
|
261
271
|
If the plugin blocks everything with an unavailable-key or authentication error,
|
{atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/atbash_hermes_plugin/__init__.py
RENAMED
|
@@ -554,9 +554,10 @@ class AtbashHermesGuard:
|
|
|
554
554
|
self.endpoint = os.getenv("ATBASH_ENDPOINT")
|
|
555
555
|
self.judge_endpoint_policy = os.getenv("ATBASH_JUDGE_ENDPOINT_POLICY")
|
|
556
556
|
self.judge_verify_pubkey = os.getenv("ATBASH_JUDGE_VERIFY_PUBKEY")
|
|
557
|
-
self.key_path = os.getenv("ATBASH_KEY_PATH")
|
|
557
|
+
self.key_path = os.path.expandvars(os.path.expanduser(os.getenv("ATBASH_KEY_PATH") or "")) or None
|
|
558
558
|
self.privkey = os.getenv("ATBASH_AGENT_PRIVKEY")
|
|
559
559
|
self.org_name = os.getenv("ATBASH_ORG_NAME")
|
|
560
|
+
self.request_timeout = float(os.getenv("ATBASH_REQUEST_TIMEOUT") or 30.0)
|
|
560
561
|
self.provider = os.getenv("HERMES_PROVIDER")
|
|
561
562
|
self.model = os.getenv("HERMES_MODEL")
|
|
562
563
|
self.tool_map_path = Path(
|
|
@@ -612,6 +613,7 @@ class AtbashHermesGuard:
|
|
|
612
613
|
judge=judge_cfg,
|
|
613
614
|
org_name=self.org_name,
|
|
614
615
|
fail_closed=self.fail_closed,
|
|
616
|
+
timeout=self.request_timeout,
|
|
615
617
|
)
|
|
616
618
|
except TypeError:
|
|
617
619
|
kwargs: Dict[str, Any] = {
|
|
@@ -630,6 +632,7 @@ class AtbashHermesGuard:
|
|
|
630
632
|
judge=judge_cfg,
|
|
631
633
|
org_name=self.org_name,
|
|
632
634
|
fail_closed=self.fail_closed,
|
|
635
|
+
timeout=self.request_timeout,
|
|
633
636
|
)
|
|
634
637
|
|
|
635
638
|
def _judge_config(self) -> Optional[Dict[str, str]]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atbash-hermes-plugin
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.6.dev1
|
|
4
4
|
Summary: Atbash safety plugin for Hermes Agent
|
|
5
5
|
Author: atbash
|
|
6
6
|
License-Expression: LicenseRef-Atbash-Proprietary
|
|
@@ -10,7 +10,7 @@ Keywords: atbash,hermes,hermes-agent,agent-safety,ai-safety,tool-guard,judge,pol
|
|
|
10
10
|
Requires-Python: <3.13,>=3.9
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
12
|
License-File: LICENSE
|
|
13
|
-
Requires-Dist: atbash-sdk==0.4.
|
|
13
|
+
Requires-Dist: atbash-sdk==0.4.7.dev0
|
|
14
14
|
Requires-Dist: httpx<1,>=0.27
|
|
15
15
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http<2,>=1.29
|
|
16
16
|
Requires-Dist: opentelemetry-sdk<2,>=1.29
|
|
@@ -30,24 +30,38 @@ stopped before execution.
|
|
|
30
30
|
- Intercepts Hermes tool calls through `pre_tool_call`.
|
|
31
31
|
- Sends the tool name, arguments, command-like payload, session metadata, and
|
|
32
32
|
inferred action class to Atbash.
|
|
33
|
-
- Blocks tool execution on `BLOCK`, `DENY`, `REJECT`, `DISALLOW
|
|
33
|
+
- Blocks tool execution on `BLOCK`, `DENY`, `REJECT`, or `DISALLOW`; holds it for operator review on `HOLD`.
|
|
34
34
|
- Persists learned Hermes tool classifications across sessions.
|
|
35
35
|
|
|
36
36
|
## Install
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
Hermes manages its own Python environment. Install the plugin directly into it —
|
|
39
|
+
do **not** use your system `pip` — on macOS and some Linux distros it will be blocked by the OS.
|
|
40
|
+
|
|
41
|
+
**If you installed Hermes via the official install script (`curl … | bash`):**
|
|
40
42
|
|
|
41
43
|
```bash
|
|
42
|
-
|
|
44
|
+
~/.hermes/hermes-agent/venv/bin/pip3 install atbash-hermes-plugin
|
|
43
45
|
```
|
|
44
46
|
|
|
45
|
-
If
|
|
47
|
+
**If you installed Hermes via `uv`:**
|
|
46
48
|
|
|
47
49
|
```bash
|
|
48
|
-
/
|
|
50
|
+
uv pip install --python ~/.hermes/hermes-agent/venv/bin/python atbash-hermes-plugin
|
|
49
51
|
```
|
|
50
52
|
|
|
53
|
+
To install the latest dev release, add `--pre` (pip) or `--prerelease=allow` (uv):
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# pip
|
|
57
|
+
~/.hermes/hermes-agent/venv/bin/pip3 install --pre atbash-hermes-plugin
|
|
58
|
+
|
|
59
|
+
# uv
|
|
60
|
+
uv pip install --python ~/.hermes/hermes-agent/venv/bin/python --prerelease=allow atbash-hermes-plugin
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
No further activation step is needed — Hermes discovers the plugin automatically on next start.
|
|
64
|
+
|
|
51
65
|
## Configure Atbash
|
|
52
66
|
|
|
53
67
|
The plugin needs an Atbash agent key. Configure either `ATBASH_KEY_PATH` or
|
|
@@ -56,10 +70,10 @@ The plugin needs an Atbash agent key. Configure either `ATBASH_KEY_PATH` or
|
|
|
56
70
|
Recommended:
|
|
57
71
|
|
|
58
72
|
```bash
|
|
59
|
-
ATBASH_KEY_PATH
|
|
73
|
+
ATBASH_KEY_PATH=~/.config/atbash/guard-client-key
|
|
60
74
|
```
|
|
61
75
|
|
|
62
|
-
Alternative:
|
|
76
|
+
Alternative (paste the key JSON directly):
|
|
63
77
|
|
|
64
78
|
```bash
|
|
65
79
|
ATBASH_AGENT_PRIVKEY='{"pubkey":"...","privkey":"..."}'
|
|
@@ -67,7 +81,7 @@ ATBASH_AGENT_PRIVKEY='{"pubkey":"...","privkey":"..."}'
|
|
|
67
81
|
|
|
68
82
|
## Where To Set Environment Variables
|
|
69
83
|
|
|
70
|
-
Hermes
|
|
84
|
+
Hermes loads environment variables from `~/.hermes/.env`.
|
|
71
85
|
|
|
72
86
|
Create or edit that file:
|
|
73
87
|
|
|
@@ -78,7 +92,7 @@ nano ~/.hermes/.env
|
|
|
78
92
|
Add:
|
|
79
93
|
|
|
80
94
|
```bash
|
|
81
|
-
ATBASH_KEY_PATH
|
|
95
|
+
ATBASH_KEY_PATH=~/.config/atbash/guard-client-key
|
|
82
96
|
ATBASH_ENFORCE_DECISION=true
|
|
83
97
|
ATBASH_DEBUG=false
|
|
84
98
|
ATBASH_ORG_NAME=your-org-name
|
|
@@ -118,7 +132,11 @@ ATBASH_DEBUG=false
|
|
|
118
132
|
ATBASH_ORG_NAME=your-org-name
|
|
119
133
|
|
|
120
134
|
# Override where learned Hermes tool classifications are saved.
|
|
121
|
-
ATBASH_TOOL_MAP_PATH
|
|
135
|
+
ATBASH_TOOL_MAP_PATH=~/.config/atbash/hermes-tool-map.json
|
|
136
|
+
|
|
137
|
+
# HTTP request timeout in seconds for judge API calls. Default: 30.
|
|
138
|
+
# Raise this if you see "read operation timed out" errors on a slow endpoint.
|
|
139
|
+
ATBASH_REQUEST_TIMEOUT=30
|
|
122
140
|
```
|
|
123
141
|
|
|
124
142
|
## Telemetry
|
|
@@ -136,19 +154,13 @@ printf '{"enabled": false}\n' > ~/.config/atbash/telemetry.json
|
|
|
136
154
|
|
|
137
155
|
## Enable Or Check The Plugin
|
|
138
156
|
|
|
139
|
-
Hermes
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
Check whether Hermes sees the plugin:
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
hermes plugins list | grep atbash
|
|
146
|
-
```
|
|
157
|
+
Hermes discovers the plugin automatically via Python entry points — no manual
|
|
158
|
+
enable step is needed. Restarting Hermes after installation is sufficient.
|
|
147
159
|
|
|
148
|
-
|
|
160
|
+
To confirm the package is installed in the right environment:
|
|
149
161
|
|
|
150
162
|
```bash
|
|
151
|
-
hermes
|
|
163
|
+
~/.hermes/hermes-agent/venv/bin/pip3 show atbash-hermes-plugin
|
|
152
164
|
```
|
|
153
165
|
|
|
154
166
|
## Verify It Is Working
|
|
@@ -159,7 +171,7 @@ file or opening a website.
|
|
|
159
171
|
In another terminal, watch the Hermes log:
|
|
160
172
|
|
|
161
173
|
```bash
|
|
162
|
-
tail -f ~/.hermes/logs/agent.log
|
|
174
|
+
tail -f ~/.hermes/logs/agent.log | grep -i atbash
|
|
163
175
|
```
|
|
164
176
|
|
|
165
177
|
With `ATBASH_DEBUG=true`, you should see lines similar to:
|
|
@@ -254,26 +266,24 @@ user to retry after review, rather than automatically re-running the action.
|
|
|
254
266
|
|
|
255
267
|
## Troubleshooting
|
|
256
268
|
|
|
257
|
-
If
|
|
269
|
+
If the plugin is not being picked up, confirm it is installed in the Hermes
|
|
270
|
+
environment (not the system Python):
|
|
258
271
|
|
|
259
272
|
```bash
|
|
260
|
-
hermes
|
|
261
|
-
python -m pip show atbash-hermes-plugin
|
|
273
|
+
~/.hermes/hermes-agent/venv/bin/pip3 show atbash-hermes-plugin
|
|
262
274
|
```
|
|
263
275
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
If Atbash verdicts are not appearing in logs:
|
|
276
|
+
If Atbash verdicts are not appearing in logs, enable debug mode by adding this
|
|
277
|
+
to `~/.hermes/.env`:
|
|
268
278
|
|
|
269
279
|
```bash
|
|
270
280
|
ATBASH_DEBUG=true
|
|
271
281
|
```
|
|
272
282
|
|
|
273
|
-
Then restart Hermes and watch:
|
|
283
|
+
Then restart Hermes and watch in a second terminal:
|
|
274
284
|
|
|
275
285
|
```bash
|
|
276
|
-
tail -f ~/.hermes/logs/agent.log
|
|
286
|
+
tail -f ~/.hermes/logs/agent.log | grep -i atbash
|
|
277
287
|
```
|
|
278
288
|
|
|
279
289
|
If the plugin blocks everything with an unavailable-key or authentication error,
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "atbash-hermes-plugin"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.6.dev1"
|
|
8
8
|
description = "Atbash safety plugin for Hermes Agent"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9,<3.13"
|
|
@@ -24,7 +24,7 @@ keywords = [
|
|
|
24
24
|
"policy"
|
|
25
25
|
]
|
|
26
26
|
dependencies = [
|
|
27
|
-
"atbash-sdk==0.4.
|
|
27
|
+
"atbash-sdk==0.4.7.dev0",
|
|
28
28
|
"httpx>=0.27,<1",
|
|
29
29
|
"opentelemetry-exporter-otlp-proto-http>=1.29,<2",
|
|
30
30
|
"opentelemetry-sdk>=1.29,<2",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{atbash_hermes_plugin-0.4.5.dev1 → atbash_hermes_plugin-0.4.6.dev1}/tests/test_memory_poisoning.py
RENAMED
|
File without changes
|