Teknium
d44a295492
Inspired by Claude Cowork: security scanning for plugin install/update
...
Claude Cowork (Aug 6, 2026) added skill & plugin security scanning:
third-party skills and plugins are automatically checked for malicious
content on upload/edit, returning pass/warn/fail. Hermes already scans
hub-installed skills (tools/skills_guard.py), but `hermes plugins
install` cloned and activated arbitrary Git repos completely unscanned —
and plugins run Python in-process, making them the more dangerous
surface.
- tools/plugin_guard.py: plugin-adapted scanner reusing the skills_guard
pattern engine. Exempts the documented provider-plugin patterns (own
requires_env API-key reads, HTTP calls with keys) on code files while
keeping true threat signals (foreign credential-store access, reverse
shells, destructive/persistence/obfuscation patterns, prompt injection
in docs). Plugin-sized structural limits; VCS/venv dirs excluded.
- hermes_cli/plugins_cmd.py: scan the temp clone before it is moved into
~/.hermes/plugins/. safe=install, caution=confirm (interactive prompt
or --force), dangerous=blocked (--force does NOT override). Re-scan on
`hermes plugins update`; a dangerous updated tree is deactivated until
the user reviews the findings. Dashboard install path returns
structured scan_blocked/scan_findings.
- Config gate: plugins.scan_on_install (default true) in config.yaml.
- Validated against all 60 bundled plugins: 57 safe, 3 caution (real
sudo / curl|sh content in their docs), 0 false-positive blocks.
- 15 new tests incl. E2E through _install_plugin_core with real git
clones.
2026-08-16 22:08:37 -07:00
..
2026-08-14 21:39:01 +00:00
2026-08-12 18:52:08 -07:00
2026-08-15 00:33:01 -07:00
2026-07-22 16:51:01 -04:00
2026-08-12 19:56:44 -07:00
2026-08-16 19:50:07 -07:00
2026-08-16 10:32:53 -07:00
2026-08-15 03:54:07 -07:00
2026-08-15 14:24:35 -07:00
2026-08-16 06:31:26 -07:00
2026-08-16 02:03:22 -07:00
2026-08-02 21:13:12 +05:30
2026-08-16 06:32:08 -07:00
2026-08-15 00:33:01 -07:00
2026-08-02 14:55:32 +05:30
2026-08-08 23:56:46 -07:00
2026-07-26 21:13:03 -07:00
2026-08-12 16:26:55 -07:00
2026-08-07 08:57:39 -07:00
2026-08-07 08:57:39 -07:00
2026-07-17 11:37:25 +05:30
2026-08-16 06:29:53 -07:00
2026-07-11 12:28:55 +05:30
2026-08-16 02:00:50 -07:00
2026-07-31 21:21:20 -07:00
2026-08-15 04:33:47 -07:00
2026-08-07 17:45:06 +05:30
2026-07-29 23:16:18 -07:00
2026-08-02 20:21:59 -07:00
2026-08-08 15:10:35 +05:30
2026-08-16 06:32:08 -07:00
2026-08-14 20:47:13 -07:00
2026-07-29 11:53:39 -07:00
2026-08-14 13:40:19 -07:00
2026-07-29 08:42:16 -07:00
2026-07-21 05:27:13 -07:00
2026-08-15 02:04:49 -07:00
2026-08-16 22:06:41 -07:00
2026-08-15 00:20:32 -07:00
2026-08-15 03:16:21 -07:00
2026-08-15 00:33:32 -07:00
2026-08-01 10:52:34 -07:00
2026-07-22 21:17:21 -07:00
2026-08-03 21:16:09 +05:30
2026-07-19 03:02:21 -07:00
2026-08-15 02:44:14 -07:00
2026-08-16 22:06:41 -07:00
2026-08-10 15:13:29 -04:00
2026-08-16 10:51:50 -07:00
2026-08-04 11:53:32 -06:00
2026-08-13 02:38:28 -07:00
2026-08-13 02:38:28 -07:00
2026-08-13 02:38:28 -07:00
2026-08-02 16:16:36 -07:00
2026-08-15 13:28:14 -07:00
2026-07-26 23:41:54 -07:00
2026-07-31 22:35:26 -07:00
2026-07-26 18:10:34 -07:00
2026-08-15 18:15:13 -07:00
2026-07-29 11:53:39 -07:00
2026-08-16 06:26:12 -07:00
2026-08-16 19:54:37 -07:00
2026-08-15 04:33:47 -07:00
2026-08-10 12:43:46 -07:00
2026-08-05 11:47:05 -04:00
2026-08-05 22:32:55 -07:00
2026-08-13 23:10:16 +05:30
2026-07-26 17:46:29 -07:00
2026-07-15 07:39:42 -07:00
2026-08-16 02:08:53 -07:00
2026-08-16 21:56:30 -07:00
2026-07-15 07:39:17 -07:00
2026-08-10 12:43:46 -07:00
2026-07-15 07:39:17 -07:00
2026-08-10 12:43:46 -07:00
2026-08-16 21:56:30 -07:00
2026-07-27 21:10:51 -07:00
2026-08-05 11:47:05 -04:00
2026-08-14 13:40:19 -07:00
2026-08-16 22:06:24 -07:00
2026-08-14 22:37:46 -07:00
2026-08-15 02:03:24 -07:00
2026-08-16 02:24:32 -07:00
2026-08-07 09:44:21 -07:00
2026-08-02 22:44:38 +05:30
2026-08-13 23:15:25 +05:30
2026-07-29 11:53:39 -07:00
2026-08-12 21:50:35 -07:00
2026-08-12 21:50:35 -07:00
2026-08-01 14:52:18 -07:00
2026-08-14 01:31:31 -07:00
2026-08-14 01:06:13 -07:00
2026-08-04 19:35:57 +00:00
2026-07-26 21:22:40 -07:00
2026-08-14 01:06:13 -07:00
2026-08-16 06:25:46 -07:00
2026-08-15 00:34:29 -07:00
2026-08-15 00:34:29 -07:00
2026-08-07 19:47:40 +05:30
2026-07-29 10:13:50 -07:00
2026-08-13 02:38:28 -07:00
2026-08-14 21:35:30 -07:00
2026-07-29 10:14:11 -07:00
2026-08-15 10:29:05 +05:30
2026-07-29 17:51:40 -05:00
2026-08-09 10:33:58 -07:00
2026-08-15 00:32:44 -07:00
2026-08-12 20:10:51 -07:00
2026-08-12 20:10:51 -07:00
2026-08-12 18:39:22 -07:00
2026-08-12 18:52:08 -07:00
2026-08-12 19:56:44 -07:00
2026-08-16 22:08:37 -07:00
2026-08-15 23:03:52 -07:00
2026-07-28 22:42:19 -07:00
2026-07-15 07:39:17 -07:00
2026-08-06 05:00:17 +05:30
2026-08-10 22:48:24 -07:00
2026-08-15 00:33:11 -07:00
2026-08-16 06:24:56 -07:00
2026-07-31 21:21:16 -07:00
2026-08-13 03:06:08 -07:00
2026-07-29 11:53:39 -07:00
2026-08-16 15:52:24 +05:30
2026-07-29 10:14:11 -07:00
2026-08-14 13:51:26 -07:00
2026-08-10 17:02:56 -07:00
2026-07-29 17:13:48 +05:30
2026-08-16 01:48:59 -07:00
2026-08-15 01:55:22 -07:00
2026-07-29 11:53:39 -07:00
2026-08-01 10:47:20 -07:00
2026-08-08 12:32:23 -07:00
2026-08-14 21:07:21 -07:00
2026-08-15 02:04:49 -07:00
2026-08-15 02:04:49 -07:00
2026-07-26 19:30:21 -07:00
2026-07-31 22:36:55 -07:00
2026-08-15 00:31:37 -07:00
2026-07-17 04:53:38 -07:00
2026-08-12 19:43:47 -07:00
2026-08-16 01:55:25 -07:00
2026-07-26 08:43:24 -07:00
2026-08-12 16:59:37 -07:00
2026-08-08 15:10:35 +05:30
2026-07-09 19:57:54 -07:00
2026-08-16 02:02:34 -07:00
2026-08-05 11:59:33 +05:30
2026-07-21 21:00:43 -05:00
2026-07-29 09:33:48 -07:00
2026-07-29 12:11:24 -07:00
2026-07-24 16:00:03 -07:00
2026-07-31 23:18:12 -07:00
2026-08-07 08:58:14 -07:00
2026-08-16 01:54:35 -07:00
2026-08-07 17:45:06 +05:30
2026-08-15 18:15:18 -07:00
2026-08-02 16:16:36 -07:00
2026-08-14 00:26:11 -07:00
2026-08-16 13:01:20 -07:00
2026-07-29 11:53:39 -07:00
2026-08-06 05:00:17 +05:30
2026-08-16 22:07:09 -07:00
2026-07-31 22:28:46 -07:00
2026-08-14 16:43:37 -07:00
2026-07-29 19:48:37 -07:00
2026-08-07 10:11:05 -07:00
2026-08-15 01:05:39 -07:00
2026-07-29 16:21:54 -07:00
2026-08-16 20:53:44 -07:00
2026-08-15 01:21:40 -07:00
2026-08-16 21:54:31 -07:00
2026-07-24 11:45:57 -07:00
2026-07-29 10:14:11 -07:00
2026-08-01 14:30:16 -07:00
2026-08-06 05:00:17 +05:30