hermes-action-bridge 0.3.0 → 0.5.0

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 (61) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/README.md +123 -22
  3. package/dist/adapters/hermes-cli.d.ts +14 -0
  4. package/dist/adapters/hermes-cli.js +80 -21
  5. package/dist/adapters/hermes-cli.js.map +1 -1
  6. package/dist/approvals.d.ts +35 -0
  7. package/dist/approvals.js +96 -0
  8. package/dist/approvals.js.map +1 -0
  9. package/dist/audit-log.d.ts +21 -0
  10. package/dist/audit-log.js +31 -0
  11. package/dist/audit-log.js.map +1 -0
  12. package/dist/capabilities.d.ts +29 -0
  13. package/dist/capabilities.js +24 -0
  14. package/dist/capabilities.js.map +1 -0
  15. package/dist/cli.js +205 -20
  16. package/dist/cli.js.map +1 -1
  17. package/dist/config.js +0 -6
  18. package/dist/config.js.map +1 -1
  19. package/dist/doctor.d.ts +8 -1
  20. package/dist/doctor.js +76 -13
  21. package/dist/doctor.js.map +1 -1
  22. package/dist/execution-gate.d.ts +5 -0
  23. package/dist/execution-gate.js +20 -0
  24. package/dist/execution-gate.js.map +1 -0
  25. package/dist/http-server.d.ts +18 -0
  26. package/dist/http-server.js +310 -0
  27. package/dist/http-server.js.map +1 -0
  28. package/dist/install/launcher.d.ts +3 -0
  29. package/dist/install/launcher.js +7 -0
  30. package/dist/install/launcher.js.map +1 -0
  31. package/dist/install/mcp-config.js +12 -3
  32. package/dist/install/mcp-config.js.map +1 -1
  33. package/dist/install/mcp-service.d.ts +44 -0
  34. package/dist/install/mcp-service.js +172 -0
  35. package/dist/install/mcp-service.js.map +1 -0
  36. package/dist/install/templates.js +38 -32
  37. package/dist/install/templates.js.map +1 -1
  38. package/dist/install/types.d.ts +1 -0
  39. package/dist/jobs.d.ts +51 -0
  40. package/dist/jobs.js +244 -0
  41. package/dist/jobs.js.map +1 -0
  42. package/dist/mcp-server.d.ts +32 -0
  43. package/dist/mcp-server.js +394 -25
  44. package/dist/mcp-server.js.map +1 -1
  45. package/dist/policy.js +9 -2
  46. package/dist/policy.js.map +1 -1
  47. package/dist/run.js +0 -1
  48. package/dist/run.js.map +1 -1
  49. package/dist/types.d.ts +2 -4
  50. package/dist/validation.d.ts +1 -0
  51. package/dist/validation.js +8 -0
  52. package/dist/validation.js.map +1 -0
  53. package/docs/ARCHITECTURE.md +69 -9
  54. package/docs/FUNCTIONAL-TESTS.md +27 -12
  55. package/examples/claude-code/SKILL.md +35 -29
  56. package/examples/codex/SKILL.md +35 -29
  57. package/package.json +5 -3
  58. package/plugins/hermes-action/.codex-plugin/plugin.json +30 -0
  59. package/plugins/hermes-action/.mcp.json +8 -0
  60. package/plugins/hermes-action/assets/app-icon.png +0 -0
  61. package/plugins/hermes-action/skills/hermes-action-bridge/SKILL.md +61 -0
@@ -25,7 +25,12 @@ Hermes skills, tools, browser automation, MCPs, cron jobs, messaging, APIs
25
25
  - `src/prompt.ts`: prompt envelope sent to Hermes.
26
26
  - `src/context.ts`: context file loading with a per-file cap and an aggregate budget.
27
27
  - `src/adapters/hermes-cli.ts`: Hermes CLI adapter (argv or temp-file prompt delivery, child-process timeout).
28
- - `src/mcp-server.ts`: minimal MCP server.
28
+ - `src/mcp-server.ts`: MCP server factory, delegation tools, jobs, and approval orchestration.
29
+ - `src/http-server.ts`: authenticated, opt-in Streamable HTTP transport.
30
+ - `src/capabilities.ts`: configuration-backed capability inventory.
31
+ - `src/jobs.ts`: bounded process-local asynchronous jobs.
32
+ - `src/approvals.ts`: short-lived, one-shot approval records.
33
+ - `src/audit-log.ts`: privacy-preserving owner-only JSONL audit metadata.
29
34
  - `src/status.ts`: runtime availability check.
30
35
  - `src/version.ts`: single source of truth for the package version.
31
36
  - `src/doctor.ts`: environment checks for `hermes-action doctor`.
@@ -40,9 +45,14 @@ The `install` / `uninstall` commands install an open-standard `SKILL.md` for Cla
40
45
  - `src/install/marker-block.ts`: fail-safe marker block for the optional `CLAUDE.md` / `AGENTS.md` hint.
41
46
  - `src/install/file-edit.ts`: shared read-edit-write helper used by the hint and the `.mcp.json` writer.
42
47
  - `src/install/mcp-config.ts`: MCP snippets and the Claude Code `.mcp.json` merge/unmerge writer.
48
+ - `src/install/mcp-service.ts`: native Codex/Claude MCP registration, inspection, conflict handling, and removal.
43
49
  - `src/install/install-service.ts`: per-agent install/uninstall with failure isolation.
44
50
 
45
- Defaults are conservative: never modify `CLAUDE.md` / `AGENTS.md` without `--project-hint`, never overwrite a file the installer did not generate, and stay idempotent.
51
+ The global default is a complete installation: managed skill plus MCP
52
+ registration through each agent's native CLI, using the bridge's absolute
53
+ launcher path. Defaults remain conservative: never modify `CLAUDE.md` /
54
+ `AGENTS.md` without `--project-hint`, never overwrite foreign skills or
55
+ customized MCP entries, and stay idempotent.
46
56
 
47
57
  ## Config precedence
48
58
 
@@ -68,18 +78,22 @@ Project config:
68
78
 
69
79
  The bridge does not decide how Hermes completes the task. It only labels the requested behavior:
70
80
 
71
- - `plan`: no side effects.
81
+ - `plan`: prompt-level plan-only policy; callers must still treat configured Hermes tools as open-world.
72
82
  - `draft`: produce an artifact, no external side effects.
73
83
  - `execute`: execute allowed actions.
74
84
  - `request-approval`: prepare the action and ask for approval.
75
85
 
76
86
  ## Policy
77
87
 
78
- Policy is intentionally conservative and transparent.
88
+ Direct CLI and `hermes_run` calls rely on the **host agent's approval prompt**.
89
+ The structured MCP path adds a second deterministic barrier:
90
+ `hermes_prepare` creates a local no-tool summary, stores an immutable short-lived request, and
91
+ `hermes_approve` consumes it exactly once. The bridge never treats its own model
92
+ output as human approval.
79
93
 
80
- When a prompt contains risky intent and `mode=execute`, the bridge changes the effective mode to `request-approval` unless YOLO is enabled.
94
+ The bridge's own guard is a secondary, deterministic net: in `mode=execute` it changes the effective mode to `request-approval` unless the preset/policy is explicitly trusted (empty `require_approval_for`) or YOLO is enabled. This is independent of the prompt's language or wording.
81
95
 
82
- The detected risks are included in the prompt envelope so Hermes knows why the mode changed.
96
+ Keyword risk detection (`detectRisks`) is **informational only**: recognized categories are listed in the prompt envelope to help the human and Hermes decide, but they never drive the mode. Keyword matching is English-biased and easily evaded, so it is not treated as a security control.
83
97
 
84
98
  ## YOLO
85
99
 
@@ -104,13 +118,59 @@ Every child process is bounded by a timeout (per-mode defaults, overridable via
104
118
 
105
119
  ## MCP design
106
120
 
107
- The MCP server exposes a small delegation surface instead of mirroring every Hermes tool.
121
+ The MCP server exposes orchestration primitives instead of mirroring every
122
+ Hermes tool.
108
123
 
109
124
  Tools:
110
125
 
111
126
  - `hermes_run`
112
127
  - `hermes_plan`
128
+ - `hermes_capabilities`
113
129
  - `hermes_presets`
114
130
  - `hermes_status`
115
-
116
- This keeps schema drift low and lets Hermes remain the action runtime.
131
+ - `hermes_submit`
132
+ - `hermes_job_status`
133
+ - `hermes_result`
134
+ - `hermes_cancel`
135
+ - `hermes_prepare`
136
+ - `hermes_approve`
137
+ - `hermes_reject`
138
+
139
+ The server advertises routing instructions that distinguish Hermes-owned
140
+ connected services and automation from ordinary local coding work. Capability
141
+ discovery reports declarative presets and runtime status only; it does not
142
+ claim that a Hermes integration is live without a stable Hermes introspection
143
+ API.
144
+
145
+ Jobs are memory-only, concurrency-limited, cancellable, output-bounded, and
146
+ expire after 24 hours. Approval records expire after 15 minutes and are
147
+ one-shot. Audit JSONL stores only identifiers, modes, risks, prompt hashes, and
148
+ terminal metadata with `0600` permissions.
149
+
150
+ ## HTTP transport
151
+
152
+ `hermes-action serve` exposes `/mcp` using Streamable HTTP. It binds loopback by
153
+ default. Direct non-loopback binding requires an explicit address in
154
+ `100.64.0.0/10`, `--allow-tailnet`, and a bearer token read from an environment
155
+ variable. The server validates Host, authenticates in constant time, restricts
156
+ direct peers to Tailscale CGNAT, limits request size and active sessions, and
157
+ never exposes an unauthenticated diagnostics endpoint.
158
+
159
+ Tailscale Serve in front of a loopback listener remains the preferred remote
160
+ deployment because TLS and tailnet identity stay outside the bridge. Requests
161
+ forwarded with a `*.ts.net` Host still require the bridge bearer token.
162
+
163
+ ### Transitive Hono advisory
164
+
165
+ MCP SDK 1.29.0 currently depends on `@hono/node-server` 1.x, which npm flags
166
+ under [GHSA-frvp-7c67-39w9](https://github.com/advisories/GHSA-frvp-7c67-39w9).
167
+ That advisory applies only to the package's `serve-static` middleware on
168
+ Windows. The bridge never imports that middleware, serves no static files, and
169
+ rejects every HTTP path except `/mcp`, so the vulnerable code path is not
170
+ reachable here.
171
+
172
+ Re-evaluate this acceptance when the v1 SDK updates its Hono dependency, or
173
+ before adding static-file serving, a Hono middleware layer, or any HTTP route
174
+ that maps request paths to the filesystem. Do not force Hono 2 through an npm
175
+ override: the current SDK declares `^1.19.9`, and doing so produces an invalid
176
+ dependency tree for global installs.
@@ -27,13 +27,22 @@ The fake Hermes tests verify:
27
27
 
28
28
  The installer tests verify (with injected home/cwd and temp `HOME`, no real agents required):
29
29
 
30
- - `install` / `uninstall` are idempotent and never touch `CLAUDE.md` / `AGENTS.md` by default.
30
+ - `install` / `uninstall` manage both skills and native MCP registrations,
31
+ remain idempotent, preserve customized registrations, and never touch
32
+ `CLAUDE.md` / `AGENTS.md` by default.
31
33
  - `--dry-run` and `--print` write nothing; `--force` replaces a managed skill; a non-managed file is refused.
32
34
  - `--project-hint` adds and removes a marker block without losing existing content.
33
35
  - `--project` installs a project-local skill without creating the global one.
34
36
  - `install mcp --write` merges and `uninstall mcp --write` unmerges the project `.mcp.json`, preserving other servers.
35
- - `doctor` assembles its checks and JSON report, and `--probe` accepts the sentinel on stdout or stderr.
37
+ - `doctor` verifies skills, registrations, and an in-memory MCP handshake;
38
+ `--probe` accepts the sentinel on stdout or stderr.
36
39
  - The shipped `examples/*/SKILL.md` match the installer template exactly (no drift).
40
+ - asynchronous jobs enforce concurrency, cancellation, TTL, and bounded UTF-8
41
+ output;
42
+ - approvals are immutable, short-lived, and one-shot, while audit records omit
43
+ prompt and output content;
44
+ - the Streamable HTTP server completes an MCP handshake on loopback and rejects
45
+ public binding, weak/missing authentication, and non-Tailscale addresses.
37
46
 
38
47
  ## Live Hermes smoke test
39
48
 
@@ -55,27 +64,30 @@ node dist/cli.js run \
55
64
 
56
65
  ## Claude Code smoke test
57
66
 
58
- After `npm link`, ask Claude Code to run:
67
+ After `npm link`, install over any existing configuration:
59
68
 
60
69
  ```bash
61
- hermes-action run --dry-run --json "Return BRIDGE_OK only."
70
+ hermes-action install all --yes
71
+ claude mcp get hermes-action
72
+ hermes-action doctor
62
73
  ```
63
74
 
64
75
  Expected result:
65
76
 
66
- - The command exits `0`.
67
- - The JSON output contains a `command` array starting with `hermes chat -Q`.
68
- - The prompt contains `Mode: plan`.
77
+ - The managed Claude skill is current.
78
+ - The MCP entry points to the absolute linked bridge launcher with argument `mcp`.
79
+ - `doctor` reports `skill:claude-code`, `mcp:claude-code`, and
80
+ `mcp:handshake` as passing.
69
81
 
70
82
  ## Codex smoke test
71
83
 
72
- After `npm link`, ask Codex to run:
84
+ Verify the same installation from Codex:
73
85
 
74
86
  ```bash
75
- hermes-action run --dry-run --json "Return BRIDGE_OK only."
87
+ codex mcp get hermes-action --json
76
88
  ```
77
89
 
78
- Expected result is the same as Claude Code.
90
+ The command and arguments must match the current absolute bridge launcher.
79
91
 
80
92
  ## MCP smoke test
81
93
 
@@ -92,6 +104,9 @@ Configure an MCP client with:
92
104
  }
93
105
  ```
94
106
 
95
- Call `hermes_status` first. It should report whether the configured Hermes command is available.
107
+ Call `hermes_status` and `hermes_capabilities` first. They should report the
108
+ runtime and declarative presets without spending provider tokens.
96
109
 
97
- Then call `hermes_run` with `dryRun: true` before making real Hermes calls.
110
+ Then call `hermes_plan` before making real side-effecting calls. Validate a
111
+ two-phase action with `hermes_prepare`; call `hermes_reject` unless a human
112
+ explicitly approves the exact request returned in `preview.action`.
@@ -1,55 +1,61 @@
1
1
  ---
2
2
  name: hermes-action-bridge
3
- description: Delegate external actions, Hermes skills, browser automation, messaging, cron jobs, and integrations to Hermes Agent through hermes-action. Use when a task needs capabilities outside the local coding session.
3
+ description: Use Hermes Agent for Hermes-owned skills, memory, connected services, messaging, browser workflows, schedules, and external automation. Prefer the installed hermes_* MCP tools; use the CLI only as a fallback.
4
4
  ---
5
5
 
6
6
  # Hermes Action Bridge
7
7
 
8
- Use this skill when a task needs capabilities outside the local coding session:
9
- Hermes skills or memory, messaging platforms, browser automation, scheduled or
10
- cron automation, external research, or any platform integration already
11
- configured in Hermes Agent.
8
+ Use this skill when a task needs state or capabilities owned by Hermes Agent:
9
+ Hermes skills or memory, connected services, messaging platforms, browser
10
+ workflows, scheduled automation, or another integration configured in Hermes.
12
11
 
13
- Do not reimplement those integrations here. Delegate them to Hermes through the
14
- `hermes-action` CLI.
12
+ Do not reimplement a Hermes-owned integration in the coding agent. Prefer the
13
+ installed `hermes_*` MCP tools so the host can discover, approve, and inspect
14
+ the delegation.
15
15
 
16
16
  ## When to use
17
17
 
18
- - The task requires a Hermes skill, tool, profile, or connected service.
19
- - The task needs a real-world action that is not local code editing.
20
- - The task needs research, messaging, browser, or scheduled automation Hermes owns.
18
+ - The task names Hermes, a Hermes skill, memory, preset, or connected service.
19
+ - The task needs messaging, scheduling, browser work, or persistent external automation Hermes owns.
20
+ - The task must continue as a cancellable background job outside the local coding step.
21
21
 
22
- ## Safe default
22
+ Do not use Hermes for ordinary local code edits or repository inspection that
23
+ the current agent can perform directly.
23
24
 
24
- Ask Hermes for a plan first; it has no side effects:
25
+ ## Discover first
25
26
 
26
- ```bash
27
- hermes-action run --mode plan "<describe what Hermes should do>"
28
- ```
27
+ Call `hermes_capabilities` before assuming an integration is configured. Use
28
+ `hermes_status` to check the runtime without spending provider tokens.
29
29
 
30
- ## With context
30
+ ## Safe delegation
31
31
 
32
- Write a concise handoff to a file and pass it explicitly:
33
-
34
- ```bash
35
- hermes-action run --preset coding --context ./handoff.md "<request>"
36
- ```
32
+ - Use `hermes_plan` for plan-mode analysis, but treat it as open-world and review its output.
33
+ - Use `hermes_submit`, then `hermes_job_status` / `hermes_result`, for a
34
+ long cancellable plan or draft.
35
+ - Use `hermes_cancel` when a queued or running job is no longer wanted.
37
36
 
38
37
  ## External side effects
39
38
 
40
- For public posts, outbound email or messages, deletes, payments, credential
41
- changes, or git pushes, require human approval:
39
+ For public posts, outbound messages, deletes, payments, credential changes, or
40
+ git pushes:
41
+
42
+ 1. Call `hermes_prepare` to produce a local no-tool summary and approval ID.
43
+ 2. Show `preview.action` and the rest of the preview to the human.
44
+ 3. Call `hermes_approve` only after the human explicitly approves that
45
+ prepared action; otherwise call `hermes_reject`.
46
+
47
+ Never treat the model's own decision as human approval.
48
+
49
+ ## CLI fallback
50
+
51
+ If MCP tools are unavailable, use the local CLI:
42
52
 
43
53
  ```bash
44
- hermes-action run --mode request-approval "<request requiring side effects>"
54
+ hermes-action run --mode plan "<describe what Hermes should do>"
45
55
  ```
46
56
 
47
- Never use `--yolo` unless the human explicitly asked for trusted local
48
- execution. It bypasses only the bridge policy, not Hermes' own safety rules.
49
-
50
57
  ## Verify setup
51
58
 
52
59
  ```bash
53
- hermes-action status
54
- hermes-action run --dry-run --json "Return BRIDGE_OK only."
60
+ hermes-action doctor
55
61
  ```
@@ -1,55 +1,61 @@
1
1
  ---
2
2
  name: hermes-action-bridge
3
- description: Delegate external actions, Hermes skills, browser automation, messaging, cron jobs, and integrations to Hermes Agent through hermes-action. Use when a task needs capabilities outside the local coding session.
3
+ description: Use Hermes Agent for Hermes-owned skills, memory, connected services, messaging, browser workflows, schedules, and external automation. Prefer the installed hermes_* MCP tools; use the CLI only as a fallback.
4
4
  ---
5
5
 
6
6
  # Hermes Action Bridge
7
7
 
8
- Use this skill when a task needs capabilities outside the local coding session:
9
- Hermes skills or memory, messaging platforms, browser automation, scheduled or
10
- cron automation, external research, or any platform integration already
11
- configured in Hermes Agent.
8
+ Use this skill when a task needs state or capabilities owned by Hermes Agent:
9
+ Hermes skills or memory, connected services, messaging platforms, browser
10
+ workflows, scheduled automation, or another integration configured in Hermes.
12
11
 
13
- Do not reimplement those integrations here. Delegate them to Hermes through the
14
- `hermes-action` CLI.
12
+ Do not reimplement a Hermes-owned integration in the coding agent. Prefer the
13
+ installed `hermes_*` MCP tools so the host can discover, approve, and inspect
14
+ the delegation.
15
15
 
16
16
  ## When to use
17
17
 
18
- - The task requires a Hermes skill, tool, profile, or connected service.
19
- - The task needs a real-world action that is not local code editing.
20
- - The task needs research, messaging, browser, or scheduled automation Hermes owns.
18
+ - The task names Hermes, a Hermes skill, memory, preset, or connected service.
19
+ - The task needs messaging, scheduling, browser work, or persistent external automation Hermes owns.
20
+ - The task must continue as a cancellable background job outside the local coding step.
21
21
 
22
- ## Safe default
22
+ Do not use Hermes for ordinary local code edits or repository inspection that
23
+ the current agent can perform directly.
23
24
 
24
- Ask Hermes for a plan first; it has no side effects:
25
+ ## Discover first
25
26
 
26
- ```bash
27
- hermes-action run --mode plan "<describe what Hermes should do>"
28
- ```
27
+ Call `hermes_capabilities` before assuming an integration is configured. Use
28
+ `hermes_status` to check the runtime without spending provider tokens.
29
29
 
30
- ## With context
30
+ ## Safe delegation
31
31
 
32
- Write a concise handoff to a file and pass it explicitly:
33
-
34
- ```bash
35
- hermes-action run --preset coding --context ./handoff.md "<request>"
36
- ```
32
+ - Use `hermes_plan` for plan-mode analysis, but treat it as open-world and review its output.
33
+ - Use `hermes_submit`, then `hermes_job_status` / `hermes_result`, for a
34
+ long cancellable plan or draft.
35
+ - Use `hermes_cancel` when a queued or running job is no longer wanted.
37
36
 
38
37
  ## External side effects
39
38
 
40
- For public posts, outbound email or messages, deletes, payments, credential
41
- changes, or git pushes, require human approval:
39
+ For public posts, outbound messages, deletes, payments, credential changes, or
40
+ git pushes:
41
+
42
+ 1. Call `hermes_prepare` to produce a local no-tool summary and approval ID.
43
+ 2. Show `preview.action` and the rest of the preview to the human.
44
+ 3. Call `hermes_approve` only after the human explicitly approves that
45
+ prepared action; otherwise call `hermes_reject`.
46
+
47
+ Never treat the model's own decision as human approval.
48
+
49
+ ## CLI fallback
50
+
51
+ If MCP tools are unavailable, use the local CLI:
42
52
 
43
53
  ```bash
44
- hermes-action run --mode request-approval "<request requiring side effects>"
54
+ hermes-action run --mode plan "<describe what Hermes should do>"
45
55
  ```
46
56
 
47
- Never use `--yolo` unless the human explicitly asked for trusted local
48
- execution. It bypasses only the bridge policy, not Hermes' own safety rules.
49
-
50
57
  ## Verify setup
51
58
 
52
59
  ```bash
53
- hermes-action status
54
- hermes-action run --dry-run --json "Return BRIDGE_OK only."
60
+ hermes-action doctor
55
61
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hermes-action-bridge",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Configurable bridge for external agents to delegate actions to Hermes Agent via CLI or MCP.",
5
5
  "mcpName": "io.github.TheBlueHouse75/hermes-action-bridge",
6
6
  "repository": {
@@ -21,15 +21,17 @@
21
21
  "CHANGELOG.md",
22
22
  "CONTRIBUTING.md",
23
23
  "docs/*.md",
24
- "examples"
24
+ "examples",
25
+ "plugins"
25
26
  ],
26
27
  "scripts": {
27
28
  "build": "tsc -p tsconfig.json",
28
29
  "postbuild": "node -e \"require('node:fs').chmodSync('dist/cli.js', 0o755)\"",
29
30
  "dev": "tsx src/cli.ts",
31
+ "pretest": "npm run build",
30
32
  "test": "vitest run",
31
33
  "test:watch": "vitest",
32
- "check": "npm run build && npm run test",
34
+ "check": "npm run test",
33
35
  "prepublishOnly": "npm run check"
34
36
  },
35
37
  "keywords": [
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "hermes-action",
3
+ "version": "0.5.0",
4
+ "description": "Delegate real-world actions (research, browser, messaging, scheduling, Hermes skills/tools) to Hermes Agent.",
5
+ "author": {
6
+ "name": "Cyril Guilleminot",
7
+ "url": "https://github.com/TheBlueHouse75"
8
+ },
9
+ "homepage": "https://github.com/TheBlueHouse75/hermes-action-bridge",
10
+ "repository": "https://github.com/TheBlueHouse75/hermes-action-bridge",
11
+ "license": "MIT",
12
+ "keywords": ["hermes-agent", "mcp", "codex", "automation", "delegation"],
13
+ "mcpServers": "./.mcp.json",
14
+ "skills": "./skills/",
15
+ "interface": {
16
+ "displayName": "Hermes Action Bridge",
17
+ "shortDescription": "Delegate real-world actions to Hermes Agent",
18
+ "longDescription": "Lets Codex delegate work outside the local coding session — research, browser workflows, messaging, scheduling, and any Hermes skill or tool — to Hermes Agent, instead of reimplementing them. Deterministic safety policy (execute -> request-approval by default unless trusted). Requires Hermes Agent installed locally.",
19
+ "developerName": "Cyril Guilleminot",
20
+ "category": "Developer Tools",
21
+ "capabilities": ["Interactive", "Write"],
22
+ "websiteURL": "https://github.com/TheBlueHouse75/hermes-action-bridge",
23
+ "brandColor": "#7C3AED",
24
+ "defaultPrompt": [
25
+ "Ask Hermes for a safe plan to handle the next real-world action from this repo's context."
26
+ ],
27
+ "composerIcon": "./assets/app-icon.png",
28
+ "logo": "./assets/app-icon.png"
29
+ }
30
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "hermes-action": {
4
+ "command": "npx",
5
+ "args": ["-y", "hermes-action-bridge", "mcp"]
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: hermes-action-bridge
3
+ description: Use Hermes Agent for Hermes-owned skills, memory, connected services, messaging, browser workflows, schedules, and external automation. Prefer the installed hermes_* MCP tools; use the CLI only as a fallback.
4
+ ---
5
+
6
+ # Hermes Action Bridge
7
+
8
+ Use this skill when a task needs state or capabilities owned by Hermes Agent:
9
+ Hermes skills or memory, connected services, messaging platforms, browser
10
+ workflows, scheduled automation, or another integration configured in Hermes.
11
+
12
+ Do not reimplement a Hermes-owned integration in the coding agent. Prefer the
13
+ installed `hermes_*` MCP tools so the host can discover, approve, and inspect
14
+ the delegation.
15
+
16
+ ## When to use
17
+
18
+ - The task names Hermes, a Hermes skill, memory, preset, or connected service.
19
+ - The task needs messaging, scheduling, browser work, or persistent external automation Hermes owns.
20
+ - The task must continue as a cancellable background job outside the local coding step.
21
+
22
+ Do not use Hermes for ordinary local code edits or repository inspection that
23
+ the current agent can perform directly.
24
+
25
+ ## Discover first
26
+
27
+ Call `hermes_capabilities` before assuming an integration is configured. Use
28
+ `hermes_status` to check the runtime without spending provider tokens.
29
+
30
+ ## Safe delegation
31
+
32
+ - Use `hermes_plan` for plan-mode analysis, but treat it as open-world and review its output.
33
+ - Use `hermes_submit`, then `hermes_job_status` / `hermes_result`, for a
34
+ long cancellable plan or draft.
35
+ - Use `hermes_cancel` when a queued or running job is no longer wanted.
36
+
37
+ ## External side effects
38
+
39
+ For public posts, outbound messages, deletes, payments, credential changes, or
40
+ git pushes:
41
+
42
+ 1. Call `hermes_prepare` to produce a local no-tool summary and approval ID.
43
+ 2. Show `preview.action` and the rest of the preview to the human.
44
+ 3. Call `hermes_approve` only after the human explicitly approves that
45
+ prepared action; otherwise call `hermes_reject`.
46
+
47
+ Never treat the model's own decision as human approval.
48
+
49
+ ## CLI fallback
50
+
51
+ If MCP tools are unavailable, use the local CLI:
52
+
53
+ ```bash
54
+ hermes-action run --mode plan "<describe what Hermes should do>"
55
+ ```
56
+
57
+ ## Verify setup
58
+
59
+ ```bash
60
+ hermes-action doctor
61
+ ```