From claude-code-hermit
View and modify Hermit agent configuration for projects including model, channels, budget prompts, morning brief, heartbeat, routines, idle behavior, compaction thresholds, Docker packages, and unattended mode.
npx claudepluginhub gtapps/claude-code-hermit --plugin claude-code-fitness-hermitThis skill uses the workspace's default tool permissions.
View or modify the hermit configuration for this project.
Initializes autonomous agent in current project: creates .claude-code-hermit/ state directories, templates, OPERATOR.md; detects hermits. Run once like git init.
Deploys and configures Hermes Web UI dashboard for Hermes Agent: Vue 3 app with AI chat streaming, multi-platform channels (Telegram/Discord/Slack), session/cron/job management, analytics, logs, and web terminal.
Troubleshoots Hermes Agent ops issues like gateway failures, platform drops, cron non-execution, profile config chaos, and inactive skills/tools via hermes CLI commands in check-locate-fix-verify steps.
Share bugs, ideas, or general feedback.
View or modify the hermit configuration for this project.
/claude-code-hermit:hermit-settings — show all current settings
/claude-code-hermit:hermit-settings name — set agent name
/claude-code-hermit:hermit-settings language — set preferred language
/claude-code-hermit:hermit-settings timezone — set timezone
/claude-code-hermit:hermit-settings escalation — set escalation threshold
/claude-code-hermit:hermit-settings sign-off — set sign-off line
/claude-code-hermit:hermit-settings channels — configure channels
/claude-code-hermit:hermit-settings remote — toggle remote control
/claude-code-hermit:hermit-settings model — set Claude model
/claude-code-hermit:hermit-settings budget — toggle budget prompting
/claude-code-hermit:hermit-settings brief — configure morning brief
/claude-code-hermit:hermit-settings permissions — configure unattended mode
/claude-code-hermit:hermit-settings heartbeat — enable/disable, interval, quiet mode, active hours
/claude-code-hermit:hermit-settings routines — manage scheduled routines (add/edit/remove/enable/disable)
/claude-code-hermit:hermit-settings idle — set idle behavior (wait or discover)
/claude-code-hermit:hermit-settings env — view/edit environment variables
/claude-code-hermit:hermit-settings compact — configure SHELL.md compaction thresholds
/claude-code-hermit:hermit-settings docker — view/edit Docker packages
/claude-code-hermit:hermit-settings scheduled-checks — manage scheduled plugin skill checks
/claude-code-hermit:hermit-settings boot-skill — view/clear/change the always-on boot skill
Read .claude-code-hermit/config.json. If it doesn't exist, inform the operator: "No config found. Run /claude-code-hermit:hatch first."
If no argument (or argument is "all"): Display all current settings in a readable format:
Hermit Settings (.claude-code-hermit/config.json)
Identity:
Agent name: Atlas → any string | 'none' to clear
Language: pt → any locale code (e.g. en, pt, es, fr)
Timezone: Europe/Lisbon → any tz (e.g. UTC, America/New_York)
Escalation: balanced → balanced | conservative | autonomous
Sign-off: Atlas out. → any string | 'none' to clear
Operational:
Channels: none → run: /claude-code-hermit:hermit-settings channels
Remote control: disabled → yes | no
Model: default → opus | sonnet | haiku | none (for default)
Budget prompts: disabled → always | never
Morning brief: disabled → run: /claude-code-hermit:hermit-settings brief
Idle behavior: discover → discover | wait
Idle budget: $0.50 → any dollar amount (e.g. $0.25, $1.00)
Heartbeat: disabled → yes | no (interval, show_ok, active hours, stale threshold)
Routines: 2 configured → run: /claude-code-hermit:hermit-settings routines
Permission mode: acceptEdits → default | acceptEdits | plan | dontAsk | bypassPermissions
Auto session: enabled → read-only
Boot skill: /claude-code-hermit:session → any namespaced skill | 'none' to reset to default
tmux name: hermit-myproject → read-only
Compaction:
Monitoring: compact at 30 lines, keep 20
Session Summary: compact at 30 lines, keep 15
→ run: /claude-code-hermit:hermit-settings compact
Environment (env):
AGENT_HOOK_PROFILE standard
COMPACT_THRESHOLD 50
CLAUDE_AUTOCOMPACT_PCT_OVERRIDE 50
MAX_THINKING_TOKENS 10000
→ run: /claude-code-hermit:hermit-settings env
Scheduled Checks:
automation-recommender claude-code-setup interval 7 days 2026-04-01 enabled
md-audit claude-md-management interval 7 days (never) enabled
md-revise claude-md-management session — 2026-04-06 enabled
→ run: /claude-code-hermit:hermit-settings scheduled-checks
Docker:
Packages: build-essential, ffmpeg → run: /claude-code-hermit:hermit-settings docker
If argument is "name":
Ask: "Agent name? (e.g., Atlas, Hermit, Scout, or 'none' to clear) [current value or skip]"
Update agent_name in config.json. Set to null if operator says "none" or "clear".
If argument is "language":
Auto-detect the system locale via Bash as a default suggestion.
Ask: "Preferred language? (e.g., pt, en, es, fr) [current value or auto-detected]"
Update language in config.json.
If argument is "timezone":
Auto-detect the system timezone via Bash as a default suggestion.
Ask: "Timezone? (e.g., Europe/Lisbon, America/New_York, UTC) [current value or auto-detected]"
Update timezone in config.json.
If argument is "escalation": Ask: "How autonomous should your assistant be?
Choose 1-3: [current value]"
Update escalation in config.json with "conservative" / "balanced" / "autonomous".
If argument is "sign-off":
Ask: "Sign-off line for channel messages and briefs? (e.g., 'Atlas out.', '— A.', or 'none' to clear) [current value or skip]"
Update sign_off in config.json. Set to null if operator says "none" or "clear".
If argument is "channels":
Show current channel configuration from config.json → channels object:
Channels:
discord enabled allowed_users: [123456789] morning_brief: 07:00 state_dir: /abs/path/...
(or "No channels configured")
Ask: "Add, remove, or edit a channel? (add discord / add telegram / remove / edit / done) [done]" Loop until operator says "done":
channels.<name>: { "enabled": true, "dm_channel_id": null }. Prompt for allowed_users (paste user ID or skip) and state_dir (relative or absolute path — defaults to .claude.local/channels/<name>). Set state_dir in the channel entry. Note: "Run /claude-code-hermit:docker-setup to configure the channel token."channels.<name> from config.json.channels.<name>.allowed_users.channels.<name>.morning_brief = { "enabled": true, "time": "<HH:MM>" }. If no: set to null.channels.<name>.enabled.
Note: "Channel changes take effect on next hermit-start run."If argument is "remote":
Ask: "Enable remote control? Connect from a browser or phone via claude.ai/code.
yes — enable remote control
no — disable remote control
[current: ]"
Update remote in config.json.
Note: "Remote control changes take effect on next hermit-start run."
If argument is "model":
Ask: "Claude model to use?
opus → claude-opus-4-6
sonnet → claude-sonnet-4-6
haiku → claude-haiku-4-5-20251001
none → use Claude Code default (inherit from user config)
[current: <value or 'default'>]"
Update model in config.json. Set to null if operator says "none", "default", or "clear".
Note: "Model changes take effect on next hermit-start run."
If argument is "budget":
Ask: "Ask for a cost budget at session start?
always — prompt for a $ cap at every session start
never — skip the budget prompt
[current: ]"
Update ask_budget in config.json.
If argument is "brief":
/claude-code-hermit:hermit-settings channels."channels.<name>.morning_briefchannels.<selected-channel>.morning_brief: { "enabled": true, "time": "<HH:MM>" } in config.json. If no, set to null.If argument is "boot-skill":
Ask: "Boot skill to invoke on always-on launch? This runs after heartbeat/routines when the tmux session starts. Domain hermits (e.g. claude-code-homeassistant-hermit) declare their own — /claude-code-homeassistant-hermit:ha-boot. Leave as none to use the default (/claude-code-hermit:session).
— any namespaced skill (e.g. /claude-code-foo-hermit:foo-boot)
none — clear (falls back to /claude-code-hermit:session)
[current: <value or 'default'>]"
Update boot_skill in config.json. Set to null if operator says "none", "default", or "clear". The domain boot skill is responsible for calling /claude-code-hermit:session-start itself — this setting just controls the single bootstrap command hermit-start.py fires into the REPL.
Note: "Boot skill changes take effect on next hermit-start run."
If argument is "permissions": Ask: "Permission mode for Claude Code? (default / acceptEdits / plan / dontAsk / bypassPermissions) [current value]"
default — prompts for permission on first use of each toolacceptEdits — auto-approves file edits, prompts for shell commands (default)plan — read-only exploration, no file modifications or shell commandsdontAsk — denies all tools not in permissions.allow; requires a curated allowlist in settings.jsonbypassPermissions — no checks; isolated containers/VMs onlyauto mode exists but is only available for Teams and Enterprise accountspermission_mode in config.json.If argument is "heartbeat":
stale_threshold)Heartbeat sub-fields (press Enter to keep current value):
interval — how often to check (e.g. 5m, 15m, 30m) [current]
show_ok — post a message on healthy checks (yes / no) [current]
active — active hours window (e.g. 08:00-23:00) [current]
stale — alert if no session progress for (e.g. 2h, 30m) [current]
Then ask each field in sequence.heartbeat object in config.json.
/claude-code-hermit:heartbeat start or hermit-start.py run."If argument is "routines":
config.routines array:
Routines (config.json routines → /claude-code-hermit:hermit-routines CronCreates):
# ID Schedule Skill Status
1. morning 30 8 * * * claude-code-hermit:brief --morning enabled
2. evening 30 22 * * * claude-code-hermit:brief --evening enabled
3. weekly-deps 0 9 * * 1 claude-code-hermit:session-start ... disabled
(or "No routines configured" if empty)
30 8 * * *0 9 * * 1-50 23 * * 0*/15 * * * *0 10 1,15 * *claude-code-hermit:brief for plugin skills, ha-refresh-context for local project skills)config.json routines array.enabled field./claude-code-hermit:hermit-routines load via the Skill tool to apply the new schedule live (no restart). Surface the result inline:
/claude-code-hermit:hermit-routines load failed: . Run /claude-code-hermit:hermit-routines load manually to apply."If argument is "idle":
idle_behavior and idle_budget valuesidle_behavior in config.json with "wait" or "discover".idle_budget and offer to change it:
"Cost cap per idle task? [{current value}]"
Update idle_budget if changed.If argument is "env":
env values from config.json in a table:
Environment Variables (config.json env → .claude/settings.local.json)
AGENT_HOOK_PROFILE standard
COMPACT_THRESHOLD 50
CLAUDE_AUTOCOMPACT_PCT_OVERRIDE 50
MAX_THINKING_TOKENS 10000
AGENT_HOOK_PROFILE. These are managed by the boot script and docker-setup. If the operator tries to set one, respond: "AGENT_HOOK_PROFILE is managed by the boot script (standard for interactive, strict for Docker). To change it, edit config.json directly — the boot script validates on next start."remove <KEY>: delete the key from env<KEY> <VALUE>: set env[KEY] = VALUE.claude/settings.local.json on next hermit-start. To apply now, restart the hermit session."If argument is "compact":
compact values from config.json:
SHELL.md Compaction (config.json compact → session-mgr idle transition)
monitoring_threshold 30 (compact when Monitoring exceeds this many lines)
monitoring_keep 20 (keep this many recent entries after compacting)
summary_threshold 30 (compact when Session Summary exceeds this many lines)
summary_keep 15 (keep this many recent entries after compacting)
*_keep must not exceed its corresponding *_threshold (setting keep equal to threshold effectively disables compaction for that section)compact[key] in config.jsonIf argument is "docker":
Show current docker.packages list:
Docker Packages (config.json docker.packages → Dockerfile.hermit)
build-essential
ffmpeg
(or "No packages configured" if empty)
Ask: "Add or remove packages? (e.g., 'add ffmpeg imagemagick', 'remove ffmpeg', or 'done') [done]"
Loop until operator says "done", "skip", or presses Enter:
remove <PKG> [<PKG>...]: remove the packages from docker.packagesadd <PKG> [<PKG>...]: add the packages to docker.packages (deduplicate)After changes, note: "Rebuild your container to apply: docker compose -f docker-compose.hermit.yml build"
Then show current docker.recommended_plugins:
Recommended Plugins (config.json docker.recommended_plugins)
[enabled] claude-code-setup (claude-plugins-official) — auto-installed on boot
[enabled] claude-code-homeassistant-hermit (gtapps/claude-code-homeassistant-hermit) — auto-installed on boot
(or "No recommended plugins configured" if empty)
Ask: "Enable, disable, add, or remove recommended plugins? (e.g., 'enable claude-code-setup', 'add claude-code-setup', 'add superpowers obra/superpowers-marketplace', 'remove superpowers', or 'done') [done]"
Loop until operator says "done", "skip", or presses Enter:
enable <PLUGIN>: set enabled: true on matching entrydisable <PLUGIN>: set enabled: false on matching entryremove <PLUGIN>: remove the entry entirelyadd <PLUGIN> [<MARKETPLACE>]: add new entry with marketplace ("claude-plugins-official" if omitted), scope: "project", enabled: true. Deduplicate by plugin name.enable if it exists, add if it doesn'tAfter changes, note: "Restart container to install new plugins: .claude-code-hermit/bin/hermit-docker restart"
If argument is "scheduled-checks":
state/reflection-state.json for runtime state (last run dates). If missing, show "(no runs yet)" for all.scheduled_checks entries from config.json:
Scheduled Checks (config.json scheduled_checks)
# ID Plugin Trigger Interval Last Run Status
1. automation-recommender claude-code-setup interval 7 days 2026-04-01 enabled
2. md-audit claude-md-management interval 7 days (never) enabled
3. md-revise claude-md-management session — 2026-04-06 enabled
(or "No scheduled checks configured" if empty)
enable <id>: set enabled: true on matching entrydisable <id>: set enabled: false on matching entryinterval <id> <days>: update interval_days on matching entry (only valid for trigger: "interval")add <id> <plugin> <skill> interval [days]: add interval-triggered entry with enabled: true, interval_days (default: 7). Deduplicate by id.add <id> <plugin> <skill> session: add session-triggered entry with enabled: true. Deduplicate by id.remove <id>: delete the entry from config and its state from state/reflection-state.jsonWrite the updated config back to .claude-code-hermit/config.json.
Confirm the change to the operator.