atbash-hermes-plugin 0.4.6.dev1__tar.gz → 0.4.7__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.6.dev1 → atbash_hermes_plugin-0.4.7}/PKG-INFO +33 -43
- {atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/README.md +31 -41
- {atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/atbash_hermes_plugin/__init__.py +2 -5
- {atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/atbash_hermes_plugin.egg-info/PKG-INFO +33 -43
- {atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/atbash_hermes_plugin.egg-info/requires.txt +1 -1
- {atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/pyproject.toml +2 -2
- {atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/LICENSE +0 -0
- {atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/atbash_hermes_plugin.egg-info/SOURCES.txt +0 -0
- {atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/atbash_hermes_plugin.egg-info/dependency_links.txt +0 -0
- {atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/atbash_hermes_plugin.egg-info/entry_points.txt +0 -0
- {atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/atbash_hermes_plugin.egg-info/top_level.txt +0 -0
- {atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/setup.cfg +0 -0
- {atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/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.7
|
|
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.
|
|
13
|
+
Requires-Dist: atbash-sdk==0.5.0
|
|
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,38 +30,24 @@ 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`,
|
|
33
|
+
- Blocks tool execution on `BLOCK`, `DENY`, `REJECT`, `DISALLOW`, or `HOLD`.
|
|
34
34
|
- Persists learned Hermes tool classifications across sessions.
|
|
35
35
|
|
|
36
36
|
## Install
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
**If you installed Hermes via the official install script (`curl … | bash`):**
|
|
38
|
+
Install the plugin into the same Python environment that runs Hermes.
|
|
39
|
+
Requires Python 3.10 through 3.12.
|
|
42
40
|
|
|
43
41
|
```bash
|
|
44
|
-
|
|
42
|
+
pip install atbash-hermes-plugin==0.4.5
|
|
45
43
|
```
|
|
46
44
|
|
|
47
|
-
|
|
45
|
+
If Hermes is installed in a virtual environment, use that environment's Python:
|
|
48
46
|
|
|
49
47
|
```bash
|
|
50
|
-
|
|
48
|
+
/path/to/hermes/venv/bin/python -m pip install atbash-hermes-plugin==0.4.5
|
|
51
49
|
```
|
|
52
50
|
|
|
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
|
-
|
|
65
51
|
## Configure Atbash
|
|
66
52
|
|
|
67
53
|
The plugin needs an Atbash agent key. Configure either `ATBASH_KEY_PATH` or
|
|
@@ -70,10 +56,10 @@ The plugin needs an Atbash agent key. Configure either `ATBASH_KEY_PATH` or
|
|
|
70
56
|
Recommended:
|
|
71
57
|
|
|
72
58
|
```bash
|
|
73
|
-
ATBASH_KEY_PATH
|
|
59
|
+
ATBASH_KEY_PATH=$HOME/.config/atbash/guard-client-key
|
|
74
60
|
```
|
|
75
61
|
|
|
76
|
-
Alternative
|
|
62
|
+
Alternative:
|
|
77
63
|
|
|
78
64
|
```bash
|
|
79
65
|
ATBASH_AGENT_PRIVKEY='{"pubkey":"...","privkey":"..."}'
|
|
@@ -81,7 +67,7 @@ ATBASH_AGENT_PRIVKEY='{"pubkey":"...","privkey":"..."}'
|
|
|
81
67
|
|
|
82
68
|
## Where To Set Environment Variables
|
|
83
69
|
|
|
84
|
-
Hermes loads environment variables from `~/.hermes/.env`.
|
|
70
|
+
Hermes commonly loads environment variables from `~/.hermes/.env`.
|
|
85
71
|
|
|
86
72
|
Create or edit that file:
|
|
87
73
|
|
|
@@ -92,7 +78,7 @@ nano ~/.hermes/.env
|
|
|
92
78
|
Add:
|
|
93
79
|
|
|
94
80
|
```bash
|
|
95
|
-
ATBASH_KEY_PATH
|
|
81
|
+
ATBASH_KEY_PATH=$HOME/.config/atbash/guard-client-key
|
|
96
82
|
ATBASH_ENFORCE_DECISION=true
|
|
97
83
|
ATBASH_DEBUG=false
|
|
98
84
|
ATBASH_ORG_NAME=your-org-name
|
|
@@ -132,11 +118,7 @@ ATBASH_DEBUG=false
|
|
|
132
118
|
ATBASH_ORG_NAME=your-org-name
|
|
133
119
|
|
|
134
120
|
# Override where learned Hermes tool classifications are saved.
|
|
135
|
-
ATBASH_TOOL_MAP_PATH
|
|
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
|
|
121
|
+
ATBASH_TOOL_MAP_PATH=$HOME/.config/atbash/hermes-tool-map.json
|
|
140
122
|
```
|
|
141
123
|
|
|
142
124
|
## Telemetry
|
|
@@ -154,13 +136,19 @@ printf '{"enabled": false}\n' > ~/.config/atbash/telemetry.json
|
|
|
154
136
|
|
|
155
137
|
## Enable Or Check The Plugin
|
|
156
138
|
|
|
157
|
-
Hermes
|
|
158
|
-
|
|
139
|
+
Hermes should discover installed Python packages that expose the
|
|
140
|
+
`hermes_agent.plugins` entry point.
|
|
141
|
+
|
|
142
|
+
Check whether Hermes sees the plugin:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
hermes plugins list | grep atbash
|
|
146
|
+
```
|
|
159
147
|
|
|
160
|
-
|
|
148
|
+
If needed, enable it:
|
|
161
149
|
|
|
162
150
|
```bash
|
|
163
|
-
|
|
151
|
+
hermes plugins enable atbash-hermes-plugin
|
|
164
152
|
```
|
|
165
153
|
|
|
166
154
|
## Verify It Is Working
|
|
@@ -171,7 +159,7 @@ file or opening a website.
|
|
|
171
159
|
In another terminal, watch the Hermes log:
|
|
172
160
|
|
|
173
161
|
```bash
|
|
174
|
-
tail -f ~/.hermes/logs/agent.log
|
|
162
|
+
tail -f ~/.hermes/logs/agent.log
|
|
175
163
|
```
|
|
176
164
|
|
|
177
165
|
With `ATBASH_DEBUG=true`, you should see lines similar to:
|
|
@@ -266,24 +254,26 @@ user to retry after review, rather than automatically re-running the action.
|
|
|
266
254
|
|
|
267
255
|
## Troubleshooting
|
|
268
256
|
|
|
269
|
-
If
|
|
270
|
-
environment (not the system Python):
|
|
257
|
+
If Hermes does not show the plugin:
|
|
271
258
|
|
|
272
259
|
```bash
|
|
273
|
-
|
|
260
|
+
hermes plugins list | grep atbash
|
|
261
|
+
python -m pip show atbash-hermes-plugin
|
|
274
262
|
```
|
|
275
263
|
|
|
276
|
-
|
|
277
|
-
|
|
264
|
+
Make sure the package was installed into the same Python environment that runs
|
|
265
|
+
Hermes.
|
|
266
|
+
|
|
267
|
+
If Atbash verdicts are not appearing in logs:
|
|
278
268
|
|
|
279
269
|
```bash
|
|
280
270
|
ATBASH_DEBUG=true
|
|
281
271
|
```
|
|
282
272
|
|
|
283
|
-
Then restart Hermes and watch
|
|
273
|
+
Then restart Hermes and watch:
|
|
284
274
|
|
|
285
275
|
```bash
|
|
286
|
-
tail -f ~/.hermes/logs/agent.log
|
|
276
|
+
tail -f ~/.hermes/logs/agent.log
|
|
287
277
|
```
|
|
288
278
|
|
|
289
279
|
If the plugin blocks everything with an unavailable-key or authentication error,
|
|
@@ -12,38 +12,24 @@ 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`,
|
|
15
|
+
- Blocks tool execution on `BLOCK`, `DENY`, `REJECT`, `DISALLOW`, or `HOLD`.
|
|
16
16
|
- Persists learned Hermes tool classifications across sessions.
|
|
17
17
|
|
|
18
18
|
## Install
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
**If you installed Hermes via the official install script (`curl … | bash`):**
|
|
20
|
+
Install the plugin into the same Python environment that runs Hermes.
|
|
21
|
+
Requires Python 3.10 through 3.12.
|
|
24
22
|
|
|
25
23
|
```bash
|
|
26
|
-
|
|
24
|
+
pip install atbash-hermes-plugin==0.4.5
|
|
27
25
|
```
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
If Hermes is installed in a virtual environment, use that environment's Python:
|
|
30
28
|
|
|
31
29
|
```bash
|
|
32
|
-
|
|
30
|
+
/path/to/hermes/venv/bin/python -m pip install atbash-hermes-plugin==0.4.5
|
|
33
31
|
```
|
|
34
32
|
|
|
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
|
-
|
|
47
33
|
## Configure Atbash
|
|
48
34
|
|
|
49
35
|
The plugin needs an Atbash agent key. Configure either `ATBASH_KEY_PATH` or
|
|
@@ -52,10 +38,10 @@ The plugin needs an Atbash agent key. Configure either `ATBASH_KEY_PATH` or
|
|
|
52
38
|
Recommended:
|
|
53
39
|
|
|
54
40
|
```bash
|
|
55
|
-
ATBASH_KEY_PATH
|
|
41
|
+
ATBASH_KEY_PATH=$HOME/.config/atbash/guard-client-key
|
|
56
42
|
```
|
|
57
43
|
|
|
58
|
-
Alternative
|
|
44
|
+
Alternative:
|
|
59
45
|
|
|
60
46
|
```bash
|
|
61
47
|
ATBASH_AGENT_PRIVKEY='{"pubkey":"...","privkey":"..."}'
|
|
@@ -63,7 +49,7 @@ ATBASH_AGENT_PRIVKEY='{"pubkey":"...","privkey":"..."}'
|
|
|
63
49
|
|
|
64
50
|
## Where To Set Environment Variables
|
|
65
51
|
|
|
66
|
-
Hermes loads environment variables from `~/.hermes/.env`.
|
|
52
|
+
Hermes commonly loads environment variables from `~/.hermes/.env`.
|
|
67
53
|
|
|
68
54
|
Create or edit that file:
|
|
69
55
|
|
|
@@ -74,7 +60,7 @@ nano ~/.hermes/.env
|
|
|
74
60
|
Add:
|
|
75
61
|
|
|
76
62
|
```bash
|
|
77
|
-
ATBASH_KEY_PATH
|
|
63
|
+
ATBASH_KEY_PATH=$HOME/.config/atbash/guard-client-key
|
|
78
64
|
ATBASH_ENFORCE_DECISION=true
|
|
79
65
|
ATBASH_DEBUG=false
|
|
80
66
|
ATBASH_ORG_NAME=your-org-name
|
|
@@ -114,11 +100,7 @@ ATBASH_DEBUG=false
|
|
|
114
100
|
ATBASH_ORG_NAME=your-org-name
|
|
115
101
|
|
|
116
102
|
# Override where learned Hermes tool classifications are saved.
|
|
117
|
-
ATBASH_TOOL_MAP_PATH
|
|
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
|
|
103
|
+
ATBASH_TOOL_MAP_PATH=$HOME/.config/atbash/hermes-tool-map.json
|
|
122
104
|
```
|
|
123
105
|
|
|
124
106
|
## Telemetry
|
|
@@ -136,13 +118,19 @@ printf '{"enabled": false}\n' > ~/.config/atbash/telemetry.json
|
|
|
136
118
|
|
|
137
119
|
## Enable Or Check The Plugin
|
|
138
120
|
|
|
139
|
-
Hermes
|
|
140
|
-
|
|
121
|
+
Hermes should discover installed Python packages that expose the
|
|
122
|
+
`hermes_agent.plugins` entry point.
|
|
123
|
+
|
|
124
|
+
Check whether Hermes sees the plugin:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
hermes plugins list | grep atbash
|
|
128
|
+
```
|
|
141
129
|
|
|
142
|
-
|
|
130
|
+
If needed, enable it:
|
|
143
131
|
|
|
144
132
|
```bash
|
|
145
|
-
|
|
133
|
+
hermes plugins enable atbash-hermes-plugin
|
|
146
134
|
```
|
|
147
135
|
|
|
148
136
|
## Verify It Is Working
|
|
@@ -153,7 +141,7 @@ file or opening a website.
|
|
|
153
141
|
In another terminal, watch the Hermes log:
|
|
154
142
|
|
|
155
143
|
```bash
|
|
156
|
-
tail -f ~/.hermes/logs/agent.log
|
|
144
|
+
tail -f ~/.hermes/logs/agent.log
|
|
157
145
|
```
|
|
158
146
|
|
|
159
147
|
With `ATBASH_DEBUG=true`, you should see lines similar to:
|
|
@@ -248,24 +236,26 @@ user to retry after review, rather than automatically re-running the action.
|
|
|
248
236
|
|
|
249
237
|
## Troubleshooting
|
|
250
238
|
|
|
251
|
-
If
|
|
252
|
-
environment (not the system Python):
|
|
239
|
+
If Hermes does not show the plugin:
|
|
253
240
|
|
|
254
241
|
```bash
|
|
255
|
-
|
|
242
|
+
hermes plugins list | grep atbash
|
|
243
|
+
python -m pip show atbash-hermes-plugin
|
|
256
244
|
```
|
|
257
245
|
|
|
258
|
-
|
|
259
|
-
|
|
246
|
+
Make sure the package was installed into the same Python environment that runs
|
|
247
|
+
Hermes.
|
|
248
|
+
|
|
249
|
+
If Atbash verdicts are not appearing in logs:
|
|
260
250
|
|
|
261
251
|
```bash
|
|
262
252
|
ATBASH_DEBUG=true
|
|
263
253
|
```
|
|
264
254
|
|
|
265
|
-
Then restart Hermes and watch
|
|
255
|
+
Then restart Hermes and watch:
|
|
266
256
|
|
|
267
257
|
```bash
|
|
268
|
-
tail -f ~/.hermes/logs/agent.log
|
|
258
|
+
tail -f ~/.hermes/logs/agent.log
|
|
269
259
|
```
|
|
270
260
|
|
|
271
261
|
If the plugin blocks everything with an unavailable-key or authentication error,
|
{atbash_hermes_plugin-0.4.6.dev1 → atbash_hermes_plugin-0.4.7}/atbash_hermes_plugin/__init__.py
RENAMED
|
@@ -554,10 +554,9 @@ 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.
|
|
557
|
+
self.key_path = os.getenv("ATBASH_KEY_PATH")
|
|
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)
|
|
561
560
|
self.provider = os.getenv("HERMES_PROVIDER")
|
|
562
561
|
self.model = os.getenv("HERMES_MODEL")
|
|
563
562
|
self.tool_map_path = Path(
|
|
@@ -600,7 +599,7 @@ class AtbashHermesGuard:
|
|
|
600
599
|
from atbash import Atbash # type: ignore
|
|
601
600
|
from atbash.types import ToolCallInput # type: ignore
|
|
602
601
|
except Exception:
|
|
603
|
-
raise RuntimeError("atbash-sdk is required. Install with: pip install atbash-sdk==0.4.
|
|
602
|
+
raise RuntimeError("atbash-sdk is required. Install with: pip install atbash-sdk==0.4.5") from e
|
|
604
603
|
|
|
605
604
|
self.ToolCallInput = ToolCallInput
|
|
606
605
|
judge_cfg = self._judge_config()
|
|
@@ -613,7 +612,6 @@ class AtbashHermesGuard:
|
|
|
613
612
|
judge=judge_cfg,
|
|
614
613
|
org_name=self.org_name,
|
|
615
614
|
fail_closed=self.fail_closed,
|
|
616
|
-
timeout=self.request_timeout,
|
|
617
615
|
)
|
|
618
616
|
except TypeError:
|
|
619
617
|
kwargs: Dict[str, Any] = {
|
|
@@ -632,7 +630,6 @@ class AtbashHermesGuard:
|
|
|
632
630
|
judge=judge_cfg,
|
|
633
631
|
org_name=self.org_name,
|
|
634
632
|
fail_closed=self.fail_closed,
|
|
635
|
-
timeout=self.request_timeout,
|
|
636
633
|
)
|
|
637
634
|
|
|
638
635
|
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.7
|
|
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.
|
|
13
|
+
Requires-Dist: atbash-sdk==0.5.0
|
|
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,38 +30,24 @@ 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`,
|
|
33
|
+
- Blocks tool execution on `BLOCK`, `DENY`, `REJECT`, `DISALLOW`, or `HOLD`.
|
|
34
34
|
- Persists learned Hermes tool classifications across sessions.
|
|
35
35
|
|
|
36
36
|
## Install
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
**If you installed Hermes via the official install script (`curl … | bash`):**
|
|
38
|
+
Install the plugin into the same Python environment that runs Hermes.
|
|
39
|
+
Requires Python 3.10 through 3.12.
|
|
42
40
|
|
|
43
41
|
```bash
|
|
44
|
-
|
|
42
|
+
pip install atbash-hermes-plugin==0.4.5
|
|
45
43
|
```
|
|
46
44
|
|
|
47
|
-
|
|
45
|
+
If Hermes is installed in a virtual environment, use that environment's Python:
|
|
48
46
|
|
|
49
47
|
```bash
|
|
50
|
-
|
|
48
|
+
/path/to/hermes/venv/bin/python -m pip install atbash-hermes-plugin==0.4.5
|
|
51
49
|
```
|
|
52
50
|
|
|
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
|
-
|
|
65
51
|
## Configure Atbash
|
|
66
52
|
|
|
67
53
|
The plugin needs an Atbash agent key. Configure either `ATBASH_KEY_PATH` or
|
|
@@ -70,10 +56,10 @@ The plugin needs an Atbash agent key. Configure either `ATBASH_KEY_PATH` or
|
|
|
70
56
|
Recommended:
|
|
71
57
|
|
|
72
58
|
```bash
|
|
73
|
-
ATBASH_KEY_PATH
|
|
59
|
+
ATBASH_KEY_PATH=$HOME/.config/atbash/guard-client-key
|
|
74
60
|
```
|
|
75
61
|
|
|
76
|
-
Alternative
|
|
62
|
+
Alternative:
|
|
77
63
|
|
|
78
64
|
```bash
|
|
79
65
|
ATBASH_AGENT_PRIVKEY='{"pubkey":"...","privkey":"..."}'
|
|
@@ -81,7 +67,7 @@ ATBASH_AGENT_PRIVKEY='{"pubkey":"...","privkey":"..."}'
|
|
|
81
67
|
|
|
82
68
|
## Where To Set Environment Variables
|
|
83
69
|
|
|
84
|
-
Hermes loads environment variables from `~/.hermes/.env`.
|
|
70
|
+
Hermes commonly loads environment variables from `~/.hermes/.env`.
|
|
85
71
|
|
|
86
72
|
Create or edit that file:
|
|
87
73
|
|
|
@@ -92,7 +78,7 @@ nano ~/.hermes/.env
|
|
|
92
78
|
Add:
|
|
93
79
|
|
|
94
80
|
```bash
|
|
95
|
-
ATBASH_KEY_PATH
|
|
81
|
+
ATBASH_KEY_PATH=$HOME/.config/atbash/guard-client-key
|
|
96
82
|
ATBASH_ENFORCE_DECISION=true
|
|
97
83
|
ATBASH_DEBUG=false
|
|
98
84
|
ATBASH_ORG_NAME=your-org-name
|
|
@@ -132,11 +118,7 @@ ATBASH_DEBUG=false
|
|
|
132
118
|
ATBASH_ORG_NAME=your-org-name
|
|
133
119
|
|
|
134
120
|
# Override where learned Hermes tool classifications are saved.
|
|
135
|
-
ATBASH_TOOL_MAP_PATH
|
|
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
|
|
121
|
+
ATBASH_TOOL_MAP_PATH=$HOME/.config/atbash/hermes-tool-map.json
|
|
140
122
|
```
|
|
141
123
|
|
|
142
124
|
## Telemetry
|
|
@@ -154,13 +136,19 @@ printf '{"enabled": false}\n' > ~/.config/atbash/telemetry.json
|
|
|
154
136
|
|
|
155
137
|
## Enable Or Check The Plugin
|
|
156
138
|
|
|
157
|
-
Hermes
|
|
158
|
-
|
|
139
|
+
Hermes should discover installed Python packages that expose the
|
|
140
|
+
`hermes_agent.plugins` entry point.
|
|
141
|
+
|
|
142
|
+
Check whether Hermes sees the plugin:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
hermes plugins list | grep atbash
|
|
146
|
+
```
|
|
159
147
|
|
|
160
|
-
|
|
148
|
+
If needed, enable it:
|
|
161
149
|
|
|
162
150
|
```bash
|
|
163
|
-
|
|
151
|
+
hermes plugins enable atbash-hermes-plugin
|
|
164
152
|
```
|
|
165
153
|
|
|
166
154
|
## Verify It Is Working
|
|
@@ -171,7 +159,7 @@ file or opening a website.
|
|
|
171
159
|
In another terminal, watch the Hermes log:
|
|
172
160
|
|
|
173
161
|
```bash
|
|
174
|
-
tail -f ~/.hermes/logs/agent.log
|
|
162
|
+
tail -f ~/.hermes/logs/agent.log
|
|
175
163
|
```
|
|
176
164
|
|
|
177
165
|
With `ATBASH_DEBUG=true`, you should see lines similar to:
|
|
@@ -266,24 +254,26 @@ user to retry after review, rather than automatically re-running the action.
|
|
|
266
254
|
|
|
267
255
|
## Troubleshooting
|
|
268
256
|
|
|
269
|
-
If
|
|
270
|
-
environment (not the system Python):
|
|
257
|
+
If Hermes does not show the plugin:
|
|
271
258
|
|
|
272
259
|
```bash
|
|
273
|
-
|
|
260
|
+
hermes plugins list | grep atbash
|
|
261
|
+
python -m pip show atbash-hermes-plugin
|
|
274
262
|
```
|
|
275
263
|
|
|
276
|
-
|
|
277
|
-
|
|
264
|
+
Make sure the package was installed into the same Python environment that runs
|
|
265
|
+
Hermes.
|
|
266
|
+
|
|
267
|
+
If Atbash verdicts are not appearing in logs:
|
|
278
268
|
|
|
279
269
|
```bash
|
|
280
270
|
ATBASH_DEBUG=true
|
|
281
271
|
```
|
|
282
272
|
|
|
283
|
-
Then restart Hermes and watch
|
|
273
|
+
Then restart Hermes and watch:
|
|
284
274
|
|
|
285
275
|
```bash
|
|
286
|
-
tail -f ~/.hermes/logs/agent.log
|
|
276
|
+
tail -f ~/.hermes/logs/agent.log
|
|
287
277
|
```
|
|
288
278
|
|
|
289
279
|
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.7"
|
|
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.
|
|
27
|
+
"atbash-sdk==0.5.0",
|
|
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.6.dev1 → atbash_hermes_plugin-0.4.7}/tests/test_memory_poisoning.py
RENAMED
|
File without changes
|