Skip to main content

ocas-custodian

Automates monitoring and maintenance of agent platforms, fixing operational failures and optimizing system health during quiet hours.

Install this skill

or
55/100

Security score

The ocas-custodian skill was audited on Oct 30, 2026 and we found 5 security issues across 2 threat categories, including 2 high-severity. Review the findings below before installing.

Categories Tested

Security Issues

medium line 25

Access to home directory dotfiles

SourceSKILL.md
23 - key: HERMES_HOME
24 description: "Hermes home; roots the profile / skills / scripts paths every scan reads"
25 default: "~/.hermes"
26 - key: HERMES_PROFILE
27 description: "Active profile name; selects <HERMES_HOME>/profiles/<profile>/cron/jobs.json"
medium line 31

Access to home directory dotfiles

SourceSKILL.md
29 - key: HERMES_PROFILE_HOME
30 description: "Profile home (<HERMES_HOME>/profiles/<HERMES_PROFILE>) for journals and commons"
31 default: "~/.hermes/profiles/indigo"
32 - key: AGENT_ROOT
33 description: "Agent root for commons/ paths (e.g. $AGENT_ROOT/profiles/<profile>/commons)"
medium line 34

Access to home directory dotfiles

SourceSKILL.md
32 - key: AGENT_ROOT
33 description: "Agent root for commons/ paths (e.g. $AGENT_ROOT/profiles/<profile>/commons)"
34 default: "~/.hermes"
35triggers:
36- system health
high line 127

Windows registry startup

SourceSKILL.md
125**Two-stage self-healing contract** (`spec-ocas-recovery.md`): 1) log the decision (what, why, fingerprint, Tier) to `issues.jsonl`/journal BEFORE any fix; 2) attempt the repair; 3) re-validate BEFORE logging success — re-run the affected job/script, confirm the original signature is gone, then mark resolved. A fix without re-validation is a claim, not a resolution.
126
127**Post-fix verification:** after any Tier 1 fix, re-check the targeted log/config, then close the registry loop with `hermes cron run <id>` (batch: `scripts/verify_fixes_cron_run.py`).
128
129**Operational hints.** *Model-pin drift can't run via CLI (2026-07-22):* `hermes cron` has no `update` subcommand and `edit` lacks `--provider`/`--model`. If <operator> chose a pin target, edit `jobs.json` directly; else leave user-gated (`references/escalation-execution-loop.md`). `hermes cron edit` DOES exist for prompt/schedule/name — check `--help` before concluding anything is uneditable. *False-escalation resolution:* an open `user_gated` issue claiming "Job still erroring live" with `last_run_at` days before your sweep is the stale-error signature — re-run the job; success = FALSE ESCALATION, resolve it (`scripts/race_safe_issue_patch.py` patches race-safely).
high line 171

Windows registry startup

SourceSKILL.md
169| `write_file` "missing required field: path" | fallback `cat > /path << 'EOF' ... EOF` |
170| jobs.json parses to 0 jobs | `d.get("jobs", [])`; re-inspect raw head before concluding 0 |
171| `last_status=error` after a fix | registry lags — `hermes cron run <id>` flips it; stale ≠ failure |
172| literal `gateway restart` in command | interlock blocks — reword (e.g. "gateway reload") |
173| `append_issue_row.py` exits 2 | the row was appended and its open-count delta disagreed — inspect the row before trusting the store |
Scanned on Oct 30, 2026
View Security Dashboard
Installation guide →