atbash-hermes-plugin 0.15.0__tar.gz → 0.15.1.dev0__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.
Files changed (25) hide show
  1. {atbash_hermes_plugin-0.15.0/atbash_hermes_plugin.egg-info → atbash_hermes_plugin-0.15.1.dev0}/PKG-INFO +2 -60
  2. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/README.md +0 -58
  3. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0/atbash_hermes_plugin.egg-info}/PKG-INFO +2 -60
  4. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/atbash_hermes_plugin.egg-info/requires.txt +1 -1
  5. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/plugin.yaml +1 -1
  6. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/pyproject.toml +2 -2
  7. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/LICENSE +0 -0
  8. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/MANIFEST.in +0 -0
  9. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/NOTICE +0 -0
  10. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/atbash_hermes_plugin/__init__.py +0 -0
  11. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/atbash_hermes_plugin/__main__.py +0 -0
  12. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/atbash_hermes_plugin.egg-info/SOURCES.txt +0 -0
  13. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/atbash_hermes_plugin.egg-info/dependency_links.txt +0 -0
  14. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/atbash_hermes_plugin.egg-info/entry_points.txt +0 -0
  15. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/atbash_hermes_plugin.egg-info/top_level.txt +0 -0
  16. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/setup.cfg +0 -0
  17. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/tests/test_guard_selfprotection.py +0 -0
  18. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/tests/test_memory_poisoning.py +0 -0
  19. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/tests/test_memory_write_fail_closed.py +0 -0
  20. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/tests/test_pre_tool_call_verdicts.py +0 -0
  21. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/tests/test_release_contract.py +0 -0
  22. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/tests/test_zero_bugs_fuzz.py +0 -0
  23. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/tests/test_zero_bugs_issues.py +0 -0
  24. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/tests/test_zero_bugs_more.py +0 -0
  25. {atbash_hermes_plugin-0.15.0 → atbash_hermes_plugin-0.15.1.dev0}/tests/test_zero_bugs_round.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atbash-hermes-plugin
3
- Version: 0.15.0
3
+ Version: 0.15.1.dev0
4
4
  Summary: Atbash safety plugin for Hermes Agent
5
5
  Author: atbash
6
6
  License-Expression: Apache-2.0
@@ -11,7 +11,7 @@ Requires-Python: <3.13,>=3.9
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
13
  License-File: NOTICE
14
- Requires-Dist: atbash-sdk<1.0.0,>=0.15.0
14
+ Requires-Dist: atbash-sdk<1.0.0,>=0.15.0.dev0
15
15
  Requires-Dist: httpx<1,>=0.27
16
16
  Requires-Dist: opentelemetry-exporter-otlp-proto-http<2,>=1.29
17
17
  Requires-Dist: opentelemetry-sdk<2,>=1.29
@@ -305,64 +305,6 @@ user to retry after the policy is updated, rather than automatically re-running
305
305
 
306
306
  ## Guard Self-Protection And Memory Baselines
307
307
 
308
- - **The guard's own state is not writable by the agent.** Write tools (`write`, `edit`,
309
- `multiedit`, `write_file`, `create_file`, `patch`, `apply_patch`, `str_replace_editor`,
310
- `fs_write`, `notebook_edit`, and anything the tool map classes as `filesystem_write`)
311
- are refused, before judging and in monitor mode too, when they target
312
- `~/.config/atbash`, the configured tool map, agent key and hash baseline, a dedicated
313
- key directory (such as `/opt/data/atbash`), the Hermes home's `.env`, `.op.env`,
314
- `config.yaml` and `SOUL.md` (`~/.hermes`, `$HERMES_HOME`, and `%LOCALAPPDATA%\hermes` on
315
- Windows), the Hermes install folder's `.env`, or the plugin's install directory. To
316
- change one of these (for example your persona in `SOUL.md`), edit the file yourself;
317
- the agent's write is refused even if you approve it inside Hermes. Paths are
318
- compared by file identity, so hard links and case variants count. Patch tools are also
319
- refused when their body names one of those paths.
320
- - **A memory file with no trusted baseline is blocked, and nothing is sent anywhere.**
321
- A memory file is one of `AGENTS.md`, `AGENTS.override.md`, `CLAUDE.md`, `MEMORY.md`,
322
- `USER.md`, `DREAMS.md`, `.hermes.md`, `HERMES.md`, `.cursorrules` (by exact name, and on
323
- Windows also the spellings Windows opens as that file, such as `AGENTS.md.`), a
324
- `.cursor/rules/*.mdc` file, a `.md`/`.txt` document inside a `memory/` or `memories/`
325
- folder, or a file under `~/.claude/projects/` or `~/.openclaw/{workspace,memory}/`.
326
- Ordinary code such as `src/memory/alloc.rs` is not memory and is judged like any other
327
- file.
328
- Files the guard records itself (judged writes) are trusted. For files that existed
329
- before the guard (a repository's `AGENTS.md`), review them and trust them yourself,
330
- outside the agent:
331
-
332
- ```bash
333
- python -m atbash_hermes_plugin seed AGENTS.md memory/notes.md
334
- ```
335
-
336
- Run it from outside the repository you are trusting, with absolute paths (for example
337
- `cd ~ && python -m atbash_hermes_plugin seed /path/to/repo/AGENTS.md`): `python -m`
338
- puts the current folder first on Python's import path, so a hostile repository could
339
- otherwise shadow a standard module. The command itself never imports Hermes code.
340
-
341
- It prints the baseline file it wrote. That is the one the guard reads:
342
- `ATBASH_MEMORY_HASH_PATH` from your environment or from the Hermes home `.env`, else
343
- `~/.config/atbash/hermes-memory-hashes.json`. Pass `--store <file>` to choose it
344
- explicitly. If any file in the list cannot be read, nothing is trusted.
345
-
346
- The guard refuses agent tool calls that look like they run the seeder (the command,
347
- `seed_memory_baselines`, the baseline file's name, including quoted, variable-split or
348
- base64-encoded forms). This is best effort - see the known limit below - and it also
349
- refuses harmless agent calls that merely mention those names (editing these docs, a
350
- grep for the command).
351
-
352
- In Docker, point the baseline file at the mounted volume so trust survives restarts,
353
- e.g. `-e ATBASH_MEMORY_HASH_PATH=/opt/data/atbash/hermes-memory-hashes.json`, and run
354
- the seed command inside the container.
355
- - **What the guard sees:** tool calls only. Hermes loads its context files (`AGENTS.md`,
356
- `.hermes.md`, `SOUL.md`, ...) into a new session's instructions without a tool call, so
357
- baselines protect the agent's tool reads, and the real control on those files is that
358
- agent writes to them are scanned and judged.
359
- - **Known limit:** the baseline file (`~/.config/atbash/hermes-memory-hashes.json`) is
360
- plain JSON. The guard refuses the agent's file tools on it, but a shell command that
361
- rewrites a memory file and recomputes its SHA-256 is left to the judge. Closing that
362
- needs an authenticated baseline (a MAC) or state outside the agent's reach.
363
-
364
- ## Guard Self-Protection And Memory Baselines
365
-
366
308
  - **The guard's own state is not writable by the agent.** Write tools (`write`, `edit`,
367
309
  `multiedit`, `write_file`, `create_file`, `patch`, `apply_patch`, `str_replace_editor`,
368
310
  `fs_write`, `notebook_edit`, and anything the tool map classes as `filesystem_write`)
@@ -286,64 +286,6 @@ user to retry after the policy is updated, rather than automatically re-running
286
286
 
287
287
  ## Guard Self-Protection And Memory Baselines
288
288
 
289
- - **The guard's own state is not writable by the agent.** Write tools (`write`, `edit`,
290
- `multiedit`, `write_file`, `create_file`, `patch`, `apply_patch`, `str_replace_editor`,
291
- `fs_write`, `notebook_edit`, and anything the tool map classes as `filesystem_write`)
292
- are refused, before judging and in monitor mode too, when they target
293
- `~/.config/atbash`, the configured tool map, agent key and hash baseline, a dedicated
294
- key directory (such as `/opt/data/atbash`), the Hermes home's `.env`, `.op.env`,
295
- `config.yaml` and `SOUL.md` (`~/.hermes`, `$HERMES_HOME`, and `%LOCALAPPDATA%\hermes` on
296
- Windows), the Hermes install folder's `.env`, or the plugin's install directory. To
297
- change one of these (for example your persona in `SOUL.md`), edit the file yourself;
298
- the agent's write is refused even if you approve it inside Hermes. Paths are
299
- compared by file identity, so hard links and case variants count. Patch tools are also
300
- refused when their body names one of those paths.
301
- - **A memory file with no trusted baseline is blocked, and nothing is sent anywhere.**
302
- A memory file is one of `AGENTS.md`, `AGENTS.override.md`, `CLAUDE.md`, `MEMORY.md`,
303
- `USER.md`, `DREAMS.md`, `.hermes.md`, `HERMES.md`, `.cursorrules` (by exact name, and on
304
- Windows also the spellings Windows opens as that file, such as `AGENTS.md.`), a
305
- `.cursor/rules/*.mdc` file, a `.md`/`.txt` document inside a `memory/` or `memories/`
306
- folder, or a file under `~/.claude/projects/` or `~/.openclaw/{workspace,memory}/`.
307
- Ordinary code such as `src/memory/alloc.rs` is not memory and is judged like any other
308
- file.
309
- Files the guard records itself (judged writes) are trusted. For files that existed
310
- before the guard (a repository's `AGENTS.md`), review them and trust them yourself,
311
- outside the agent:
312
-
313
- ```bash
314
- python -m atbash_hermes_plugin seed AGENTS.md memory/notes.md
315
- ```
316
-
317
- Run it from outside the repository you are trusting, with absolute paths (for example
318
- `cd ~ && python -m atbash_hermes_plugin seed /path/to/repo/AGENTS.md`): `python -m`
319
- puts the current folder first on Python's import path, so a hostile repository could
320
- otherwise shadow a standard module. The command itself never imports Hermes code.
321
-
322
- It prints the baseline file it wrote. That is the one the guard reads:
323
- `ATBASH_MEMORY_HASH_PATH` from your environment or from the Hermes home `.env`, else
324
- `~/.config/atbash/hermes-memory-hashes.json`. Pass `--store <file>` to choose it
325
- explicitly. If any file in the list cannot be read, nothing is trusted.
326
-
327
- The guard refuses agent tool calls that look like they run the seeder (the command,
328
- `seed_memory_baselines`, the baseline file's name, including quoted, variable-split or
329
- base64-encoded forms). This is best effort - see the known limit below - and it also
330
- refuses harmless agent calls that merely mention those names (editing these docs, a
331
- grep for the command).
332
-
333
- In Docker, point the baseline file at the mounted volume so trust survives restarts,
334
- e.g. `-e ATBASH_MEMORY_HASH_PATH=/opt/data/atbash/hermes-memory-hashes.json`, and run
335
- the seed command inside the container.
336
- - **What the guard sees:** tool calls only. Hermes loads its context files (`AGENTS.md`,
337
- `.hermes.md`, `SOUL.md`, ...) into a new session's instructions without a tool call, so
338
- baselines protect the agent's tool reads, and the real control on those files is that
339
- agent writes to them are scanned and judged.
340
- - **Known limit:** the baseline file (`~/.config/atbash/hermes-memory-hashes.json`) is
341
- plain JSON. The guard refuses the agent's file tools on it, but a shell command that
342
- rewrites a memory file and recomputes its SHA-256 is left to the judge. Closing that
343
- needs an authenticated baseline (a MAC) or state outside the agent's reach.
344
-
345
- ## Guard Self-Protection And Memory Baselines
346
-
347
289
  - **The guard's own state is not writable by the agent.** Write tools (`write`, `edit`,
348
290
  `multiedit`, `write_file`, `create_file`, `patch`, `apply_patch`, `str_replace_editor`,
349
291
  `fs_write`, `notebook_edit`, and anything the tool map classes as `filesystem_write`)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atbash-hermes-plugin
3
- Version: 0.15.0
3
+ Version: 0.15.1.dev0
4
4
  Summary: Atbash safety plugin for Hermes Agent
5
5
  Author: atbash
6
6
  License-Expression: Apache-2.0
@@ -11,7 +11,7 @@ Requires-Python: <3.13,>=3.9
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
13
  License-File: NOTICE
14
- Requires-Dist: atbash-sdk<1.0.0,>=0.15.0
14
+ Requires-Dist: atbash-sdk<1.0.0,>=0.15.0.dev0
15
15
  Requires-Dist: httpx<1,>=0.27
16
16
  Requires-Dist: opentelemetry-exporter-otlp-proto-http<2,>=1.29
17
17
  Requires-Dist: opentelemetry-sdk<2,>=1.29
@@ -305,64 +305,6 @@ user to retry after the policy is updated, rather than automatically re-running
305
305
 
306
306
  ## Guard Self-Protection And Memory Baselines
307
307
 
308
- - **The guard's own state is not writable by the agent.** Write tools (`write`, `edit`,
309
- `multiedit`, `write_file`, `create_file`, `patch`, `apply_patch`, `str_replace_editor`,
310
- `fs_write`, `notebook_edit`, and anything the tool map classes as `filesystem_write`)
311
- are refused, before judging and in monitor mode too, when they target
312
- `~/.config/atbash`, the configured tool map, agent key and hash baseline, a dedicated
313
- key directory (such as `/opt/data/atbash`), the Hermes home's `.env`, `.op.env`,
314
- `config.yaml` and `SOUL.md` (`~/.hermes`, `$HERMES_HOME`, and `%LOCALAPPDATA%\hermes` on
315
- Windows), the Hermes install folder's `.env`, or the plugin's install directory. To
316
- change one of these (for example your persona in `SOUL.md`), edit the file yourself;
317
- the agent's write is refused even if you approve it inside Hermes. Paths are
318
- compared by file identity, so hard links and case variants count. Patch tools are also
319
- refused when their body names one of those paths.
320
- - **A memory file with no trusted baseline is blocked, and nothing is sent anywhere.**
321
- A memory file is one of `AGENTS.md`, `AGENTS.override.md`, `CLAUDE.md`, `MEMORY.md`,
322
- `USER.md`, `DREAMS.md`, `.hermes.md`, `HERMES.md`, `.cursorrules` (by exact name, and on
323
- Windows also the spellings Windows opens as that file, such as `AGENTS.md.`), a
324
- `.cursor/rules/*.mdc` file, a `.md`/`.txt` document inside a `memory/` or `memories/`
325
- folder, or a file under `~/.claude/projects/` or `~/.openclaw/{workspace,memory}/`.
326
- Ordinary code such as `src/memory/alloc.rs` is not memory and is judged like any other
327
- file.
328
- Files the guard records itself (judged writes) are trusted. For files that existed
329
- before the guard (a repository's `AGENTS.md`), review them and trust them yourself,
330
- outside the agent:
331
-
332
- ```bash
333
- python -m atbash_hermes_plugin seed AGENTS.md memory/notes.md
334
- ```
335
-
336
- Run it from outside the repository you are trusting, with absolute paths (for example
337
- `cd ~ && python -m atbash_hermes_plugin seed /path/to/repo/AGENTS.md`): `python -m`
338
- puts the current folder first on Python's import path, so a hostile repository could
339
- otherwise shadow a standard module. The command itself never imports Hermes code.
340
-
341
- It prints the baseline file it wrote. That is the one the guard reads:
342
- `ATBASH_MEMORY_HASH_PATH` from your environment or from the Hermes home `.env`, else
343
- `~/.config/atbash/hermes-memory-hashes.json`. Pass `--store <file>` to choose it
344
- explicitly. If any file in the list cannot be read, nothing is trusted.
345
-
346
- The guard refuses agent tool calls that look like they run the seeder (the command,
347
- `seed_memory_baselines`, the baseline file's name, including quoted, variable-split or
348
- base64-encoded forms). This is best effort - see the known limit below - and it also
349
- refuses harmless agent calls that merely mention those names (editing these docs, a
350
- grep for the command).
351
-
352
- In Docker, point the baseline file at the mounted volume so trust survives restarts,
353
- e.g. `-e ATBASH_MEMORY_HASH_PATH=/opt/data/atbash/hermes-memory-hashes.json`, and run
354
- the seed command inside the container.
355
- - **What the guard sees:** tool calls only. Hermes loads its context files (`AGENTS.md`,
356
- `.hermes.md`, `SOUL.md`, ...) into a new session's instructions without a tool call, so
357
- baselines protect the agent's tool reads, and the real control on those files is that
358
- agent writes to them are scanned and judged.
359
- - **Known limit:** the baseline file (`~/.config/atbash/hermes-memory-hashes.json`) is
360
- plain JSON. The guard refuses the agent's file tools on it, but a shell command that
361
- rewrites a memory file and recomputes its SHA-256 is left to the judge. Closing that
362
- needs an authenticated baseline (a MAC) or state outside the agent's reach.
363
-
364
- ## Guard Self-Protection And Memory Baselines
365
-
366
308
  - **The guard's own state is not writable by the agent.** Write tools (`write`, `edit`,
367
309
  `multiedit`, `write_file`, `create_file`, `patch`, `apply_patch`, `str_replace_editor`,
368
310
  `fs_write`, `notebook_edit`, and anything the tool map classes as `filesystem_write`)
@@ -1,4 +1,4 @@
1
- atbash-sdk<1.0.0,>=0.15.0
1
+ atbash-sdk<1.0.0,>=0.15.0.dev0
2
2
  httpx<1,>=0.27
3
3
  opentelemetry-exporter-otlp-proto-http<2,>=1.29
4
4
  opentelemetry-sdk<2,>=1.29
@@ -1,5 +1,5 @@
1
1
  name: atbash-hermes-plugin
2
- version: 0.15.0
2
+ version: 0.15.1.dev0
3
3
  description: Atbash guardrail plugin for Hermes Agent (pre-tool-call policy enforcement)
4
4
  author: Chromia
5
5
  entry: atbash_hermes_plugin
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "atbash-hermes-plugin"
7
- version = "0.15.0"
7
+ version = "0.15.1.dev0"
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.15.0,<1.0.0",
27
+ "atbash-sdk>=0.15.0.dev0,<1.0.0",
28
28
  "httpx>=0.27,<1",
29
29
  "opentelemetry-exporter-otlp-proto-http>=1.29,<2",
30
30
  "opentelemetry-sdk>=1.29,<2",