hermes-agent/hermes_cli
Victor Kyriazakos 3ead2bdd0d feat(prompt): configurable per-platform system-prompt hint overrides
Add platform_hints config so an admin can append to or replace Hermes'
built-in platform hint for a single messaging platform (WhatsApp, Slack,
Telegram, ...) without affecting other platforms. Enables enterprise
managed profiles to steer platform-aware skills (e.g. invoke a custom
table-formatting skill on WhatsApp where Markdown tables don't render)
while leaving Telegram/Slack/CLI behavior unchanged.

- hermes_cli/config.py: document platform_hints in DEFAULT_CONFIG
- agent/agent_init.py: load platform_hints -> agent._platform_hint_overrides
- agent/system_prompt.py: _resolve_platform_hint() applies append/replace
  (replace wins; bare string = append shorthand); defensive on bad config
- tests: 16 cases covering append/replace/shorthand/isolation/malformed

Override only affects the platform-hint segment of the system prompt;
SOUL/context/memory tiers and general instructions are unchanged.
2026-06-18 14:28:01 -07:00
..
dashboard_auth
…
proxy
…
subcommands feat(skills): find & diff user-modified bundled skills 2026-06-18 12:26:20 +05:30
__init__.py
…
_parser.py fix(desktop): keep composer usable during reconnect (#45488) 2026-06-13 02:36:09 -07:00
_subprocess_compat.py
…
active_sessions.py
…
auth.py feat(billing): /billing terminal billing — interactive TUI + CLI client (#45449) 2026-06-19 01:53:32 +05:30
auth_commands.py
…
azure_detect.py
…
backup.py fix(backup): hermes import never overwrites volatile gateway runtime state (NS-501) (#48243) 2026-06-18 15:27:45 +10:00
banner.py fix(mcp): avoid false failed startup status 2026-06-11 09:01:52 -07:00
blueprint_cmd.py refactor(cron): rebrand Cron Recipes -> Automation Blueprints 2026-06-11 10:49:47 -07:00
browser_connect.py
…
build_info.py
…
bundles.py
…
callbacks.py
…
checkpoints.py
…
claw.py
…
cli_agent_setup_mixin.py
…
cli_commands_mixin.py feat(delegation): async background subagents via delegate_task(background=true) (#40946) 2026-06-15 13:33:12 -07:00
cli_output.py
…
clipboard.py
…
codex_models.py
…
codex_runtime_plugin_migration.py
…
codex_runtime_switch.py
…
colors.py
…
commands.py feat(billing): /billing terminal billing — interactive TUI + CLI client (#45449) 2026-06-19 01:53:32 +05:30
completion.py
…
config.py feat(prompt): configurable per-platform system-prompt hint overrides 2026-06-18 14:28:01 -07:00
container_boot.py fix(docker): skip gateway reconciliation in dashboard container (autodetect) (#46293) 2026-06-15 20:51:48 +10:00
copilot_auth.py
…
cron.py revert(cron): remove per-job profile support (PR #28124) (#43956) 2026-06-10 20:46:17 -07:00
curator.py feat(curator): make skill consolidation opt-in (prune stays default-on) (#47840) 2026-06-17 05:20:32 -07:00
curses_ui.py
…
dashboard_register.py
…
debug.py
…
default_soul.py
…
dep_ensure.py
…
dingtalk_auth.py
…
doctor.py fix(doctor): recognize nvidia as vendor-slug-accepting provider 2026-06-15 12:24:46 -07:00
dump.py fix(dump): show commit date instead of release date in hermes debug (#48104) 2026-06-17 16:53:42 -07:00
env_loader.py
…
fallback_cmd.py
…
fallback_config.py
…
gateway.py fix(gateway): defer macOS launchd reload when run inside the gateway tree (#47842) 2026-06-17 05:19:21 -07:00
gateway_enroll.py feat(relay): connector⇄gateway channel auth + signed-HTTP inbound receiver + enroll CLI (#48147) 2026-06-18 12:01:54 +10:00
gateway_windows.py
…
goals.py
…
gui_uninstall.py
…
hooks.py
…
inventory.py fix(picker): remove max_models=50 cap in interactive model pickers 2026-06-18 13:47:31 -07:00
kanban.py
…
kanban_db.py fix(kanban): pin assigned profile toolsets for workers (#45590) 2026-06-13 05:50:09 -07:00
kanban_decompose.py
…
kanban_diagnostics.py
…
kanban_specify.py
…
kanban_swarm.py
…
logs.py
…
main.py fix(skills): rmtree scope guard + default pre_update_backup to true (#48200) 2026-06-18 08:53:35 -07:00
managed_uv.py
…
mcp_catalog.py fix(mcp): block exfil-shaped stdio server configs (#46083) 2026-06-14 04:24:14 -07:00
mcp_config.py fix(mcp): block suspicious stdio configs before probe (#46112) 2026-06-14 04:46:54 -07:00
mcp_picker.py
…
mcp_security.py fix(mcp): block exfil-shaped stdio server configs (#46083) 2026-06-14 04:24:14 -07:00
mcp_startup.py
…
memory_setup.py feat(memory): improve OpenViking setup UX 2026-06-17 01:04:26 +08:00
middleware.py
…
migrate.py
…
model_catalog.py
…
model_cost_guard.py
…
model_normalize.py fix(gemini): strip native self prefixes before generateContent (#36141) 2026-06-13 13:47:08 -07:00
model_setup_flows.py feat(xai): default to grok-build-0.1 2026-06-16 11:50:17 -07:00
model_switch.py fix(picker): keep max_models=0 distinct from unlimited; lock cap semantics 2026-06-18 13:47:31 -07:00
models.py feat(xai): add grok-composer-2.5-fast to xAI OAuth model picker 2026-06-17 09:49:46 -07:00
nous_account.py feat(billing): /credits command — balance + portal top-up handoff (#44776) 2026-06-12 08:51:10 +00:00
nous_billing.py feat(billing): /billing terminal billing — interactive TUI + CLI client (#45449) 2026-06-19 01:53:32 +05:30
nous_subscription.py fix(whatsapp-cloud): review follow-ups for #43921 2026-06-11 07:51:01 -07:00
oneshot.py
…
pairing.py
…
partial_compress.py
…
platforms.py
…
plugins.py fix(desktop): keep composer usable during reconnect (#45488) 2026-06-13 02:36:09 -07:00
plugins_cmd.py fix(plugins): normalize browser-pasted GitHub repo URLs (#33539) 2026-06-13 13:23:59 -07:00
portal_cli.py
…
profile_describer.py
…
profile_distribution.py
…
profiles.py fix(s6): register profile gateways without auto-starting (#46266) 2026-06-15 11:43:23 +10:00
prompt_size.py
…
providers.py
…
psutil_android.py
…
pt_input_extras.py
…
pty_bridge.py
…
relaunch.py
…
runtime_provider.py fix(desktop): never persist or restore a named custom provider as bare "custom" (#48547) 2026-06-18 11:11:51 -07:00
secret_prompt.py feat(memory): improve OpenViking setup UX 2026-06-17 01:04:26 +08:00
secrets_cli.py
…
security_advisories.py
…
security_audit.py
…
send_cmd.py fix(send): helpful error when --file gets a binary; document MEDIA: attachments (#45116) 2026-06-12 11:48:06 -07:00
service_manager.py fix(docker): supervised gateway uses --replace to take over stale holder (NS-505) (#47555) 2026-06-18 10:49:02 +10:00
session_listing.py fix: harden salvaged session and browser improvements 2026-06-15 07:46:34 -07:00
session_recap.py
…
setup.py feat(zai): add GLM-5.2 with verified 1M context window 2026-06-14 13:50:36 -07:00
setup_whatsapp_cloud.py fix(whatsapp-cloud): review follow-ups for #43921 2026-06-11 07:51:01 -07:00
skills_config.py fix(skills): apply global|platform disabled union to all resolution sites 2026-06-14 22:54:54 +05:30
skills_hub.py feat(skills): find & diff user-modified bundled skills 2026-06-18 12:26:20 +05:30
skin_engine.py
…
slack_cli.py
…
status.py
…
stdio.py
…
suggestions_cmd.py refactor(cron): rebrand Cron Recipes -> Automation Blueprints 2026-06-11 10:49:47 -07:00
telegram_managed_bot.py
…
timeouts.py
…
tips.py fix: make profile subprocess HOME policy explicit 2026-06-14 03:20:21 -07:00
tools_config.py refactor: remove agent-callable send_message tool (#47856) 2026-06-17 07:11:23 -07:00
uninstall.py
…
voice.py
…
web_server.py fix(desktop): make session delete idempotent and id-resolving (#48641) 2026-06-18 21:16:06 +00:00
webhook.py
…
win_pty_bridge.py
…
write_approval_commands.py
…
xai_retirement.py
…