remove the get_host_journal MCP tool and its capability
swarm-logs covers every host-tier unit this tool could reach, so the second, capability-gated path into host journald earns nothing and is removed outright rather than disabled behind a flag. Removed end to end: the MCP tool definition + handler, the GetHostJournal/HostJournal wire variants, hive-c0re's dispatch_host_journal handler, the ReadHostJournal capability, and the harness-side capability->--allowedTools gate. get_host_journal was the only capability that mapped to an MCP tool, so allowed_capability_tools could only ever return an empty vec; it goes too rather than linger as a function that provably does nothing. capabilities::has_cap/caps_for stay: #4624 gave ManageRootAgent's bind-mount enforcement (hive-c0re/src/lifecycle/host_config.rs) a second caller of has_cap, so they're no longer callerless once this lands on top of it. hive-sh4re's journal module (JournalPriority) had no consumer outside this tool and is deleted. An existing capabilities.json still naming read_host_journal does not error: capabilities::prune_unknown drops unrecognised names with a warn!, and an agent left with no capabilities has its entry removed. No migration step is needed. Untouched: hive-c0re/src/dashboard/journal.rs's read_host_journal_response, which matches the name but is the private helper behind the operator-only GET /api/journal-host dashboard route and carries no capability check.
This commit is contained in:
parent
eec908bdb7
commit
11097ed336
18 changed files with 21 additions and 401 deletions
|
|
@ -399,7 +399,7 @@ Contents:
|
|||
`tool_groups::set_groups`; injected as `HIVE_TOOL_GROUPS` env
|
||||
var into each agent's container.
|
||||
- `capabilities.json` — per-agent capability grants
|
||||
(`{ "atlas": ["read_host_journal"] }`). Written by
|
||||
(`{ "ruth": ["manage_root_agent"] }`). Written by
|
||||
`capabilities::set_caps`; injected as `HIVE_CAPABILITIES` env
|
||||
var. Absent agents have no extra capabilities.
|
||||
- `resource-limits.json` — per-agent container resource overrides
|
||||
|
|
|
|||
|
|
@ -363,11 +363,10 @@ that allows the underlying resource access.
|
|||
| Capability | Effect |
|
||||
|---|---|
|
||||
| `manage_root_agent` | may manage *any* agent: bind-mounts every agent's state (rw) + config (ro) into the holder's container, plus `/applied` and `/meta` (ro). Takes effect on the holder's next container rebuild/restart |
|
||||
| `read_host_journal` | registers the `get_host_journal` MCP tool + serves `GET /journal-host` requests |
|
||||
|
||||
**Config storage** — per-agent capabilities live in
|
||||
`/var/lib/hyperhive/meta/capabilities.json` alongside `tool-groups.json`.
|
||||
Format: `{ "atlas": ["read_host_journal"], "ruth": ["manage_root_agent"] }`.
|
||||
Format: `{ "ruth": ["manage_root_agent"] }`.
|
||||
An absent entry means "no extra capabilities." `render_flake` in `meta.rs`
|
||||
reads this file and injects `HIVE_CAPABILITIES` (comma-separated
|
||||
`snake_case` names) into each agent's systemd service env; absent entries emit
|
||||
|
|
|
|||
|
|
@ -44,4 +44,4 @@ debug agent behavior.
|
|||
(`mcp__matrix__*`) for agents with a matrix account, multiple
|
||||
accounts per agent, and declaring extra MCP servers generally.
|
||||
- **[scheduling](scheduling.md)** — scheduled prompts (operator
|
||||
approval required) and the `get_host_journal` diagnostics tool.
|
||||
approval required).
|
||||
|
|
|
|||
|
|
@ -66,31 +66,6 @@ body, per-target `last_fired_at` and `last_result`,
|
|||
`next_fire_at_unix`, `interval_seconds`. Use to look up an id before
|
||||
cancelling, or to audit upcoming wake-ups across the hive.
|
||||
|
||||
## `read_host_journal` capability
|
||||
|
||||
Capability-gated (not a tool group) — the operator enables it in the
|
||||
P3RM1SS10NS C4P4B1L1T13S section. Unlike tool groups this isn't
|
||||
configurable from `agent.nix`.
|
||||
|
||||
### `get_host_journal(unit?, container?, lines?, priority?, grep?, since?, until?)`
|
||||
|
||||
Fetch recent lines from the **host** journal (requires
|
||||
`read_host_journal` capability). Useful when you need visibility
|
||||
outside your own container — infrastructure services, hive-c0re
|
||||
lifecycle events, or another container's boot log.
|
||||
|
||||
- `unit` — filter to a systemd unit (for example `hive-c0re.service`).
|
||||
- `container` — nspawn machine name verbatim. Agent containers use
|
||||
the `h-<name>` prefix (for example `h-iris`); infrastructure containers
|
||||
use their full name (for example `hive-ci`, `hive-forge`, `hive-matrix`).
|
||||
Omit for the host journal. The gateway has no machine — its nginx
|
||||
runs on the host, so read it with `unit: nginx.service` and no
|
||||
`container`.
|
||||
- `lines` — how many lines to return (default 30, max 100).
|
||||
- `priority` — minimum syslog level (`emerg` … `debug`).
|
||||
- `grep` — regex matched against log message fields (`journalctl --grep`).
|
||||
- `since` / `until` — time bounds (for example `-1h`, `2024-01-01 12:00:00`).
|
||||
|
||||
## See also
|
||||
|
||||
- `remind` (no-approval self-wake path) — documented in
|
||||
|
|
|
|||
|
|
@ -150,11 +150,10 @@ hive_name?, swarm_name?, matrix_accounts? }`. `matrix_accounts` is a
|
|||
and `WebSearch` tools (not MCP tools; added directly to the
|
||||
`--allowedTools` list). Off by default; add the group in the
|
||||
P3RM1SS10NS tab and rebuild to enable.
|
||||
- **Capability-gated** — `get_host_journal` (requires
|
||||
`read_host_journal` capability set via the P3RM1SS10NS tab;
|
||||
orthogonal to tool groups). Full list of capabilities and their
|
||||
effects in [`docs/process/conventions.md#capabilities`](../process/conventions.md).
|
||||
Also documented in [`docs/tools/scheduling.md`](../tools/scheduling.md).
|
||||
- **Capabilities** — orthogonal to tool groups, set via the P3RM1SS10NS
|
||||
tab. No capability registers an MCP tool today; the full list and their
|
||||
effects are in
|
||||
[`docs/process/conventions.md#capabilities`](../process/conventions.md).
|
||||
- **Matrix MCP + extra servers** — `mcp__matrix__*` tools and
|
||||
per-agent extra MCP config. See
|
||||
[`docs/tools/matrix.md`](../tools/matrix.md).
|
||||
|
|
|
|||
|
|
@ -441,7 +441,6 @@ The current capabilities are:
|
|||
| Name | Effect |
|
||||
|------|--------|
|
||||
| `manage_root_agent` | mounts every agent's state (rw) + config (ro) into this agent's container so it can manage/recover any agent |
|
||||
| `read_host_journal` | unlocks `get_host_journal` to read journald from inside a container |
|
||||
|
||||
Each row is one agent. Columns are the capability names returned by
|
||||
`GET /api/capabilities` as `caps: Vec<String>`. Checking or unchecking
|
||||
|
|
|
|||
Loading…
Reference in a new issue