Skip to content

Chat Commands

computator1200 edited this page Jun 24, 2026 · 1 revision

Chat Commands

Control the bot at runtime from a private message or a channel (authorised users only; never triggered by history replay). There are two prefixes, by design:

  • .agent <command> drives the agent / gateway (model, memory, reasoning, ...).
  • .ircx <command> configures this IRC adapter itself, live.

Both prefixes are configurable: IRCX_COMMAND_PREFIX (default .agent) and IRCX_ADMIN_PREFIX (default .ircx). IRC clients intercept a leading /, which is why non-slash prefixes are used.


.agent - agent and gateway controls

.agent <command> bridges straight to Hermes' central slash-command registry, so anything the gateway exposes is available:

Example Effect
.agent model <name> switch model on the fly
.agent model <name> --provider <p> switch model and provider
.agent reasoning high set reasoning effort
.agent reset (alias of new) start a fresh session
.agent whoami show identity / auth
.agent status gateway status
.agent help list every available command

Replies are rewritten so any /command the gateway mentions is shown in .agent command form, matching how you actually invoke it on IRC (URLs and file paths are left alone).


.ircx - live adapter configuration

.ircx reads and writes this adapter's own settings and persists them to ircx.env (below). It is multi-network aware: it acts on the network the message arrived on.

Command Effect
.ircx list every non-secret setting and its current value
.ircx get <key> one setting
.ircx set <key> <value> change a setting (all non-secret options)
.ircx restart restart the gateway (applies connection-level changes)
.ircx help usage summary

Keys are the IRCX_* option names without the prefix, lower-cased: e.g. observe_mode, blocked_channels, raw_guardrails, require_mention, spontaneous_probability, port, nickname, channel.

Hot vs restart

  • Hot keys apply instantly (behaviour options read per message): observe_mode, spontaneous_probability, spontaneous_cooldown, require_mention, group_policy, blocked_channels, joinable_channels, allow_agent_join, allow_agent_kick, allow_raw, raw_guardrails, show_events, max_message_length, chathistory_limit, allowed_users, allow_all_users, commands_enabled, command_prefix, admin_prefix.
  • Connection keys are saved but need .ircx restart: server, port, use_tls, tls_verify, nickname, username, realname, channel, networks, sasl_mechanism, sasl_username, nickserv_service, log_dir, context_buffer, home_channel.

.ircx set tells you which kind it applied.

Secrets are never in chat

Connection passwords (sasl_password, nickserv_password, server_password) stay in the profile .env. .ircx get shows them as ***set*** / (unset), and .ircx set refuses them: the agent reads untrusted channel input, so credentials are kept out of its reach.

Examples

.ircx set observe_mode false          # stop chiming in unprompted (instant)
.ircx set blocked_channels #foo,#bar  # never-join denylist (instant)
.ircx set raw_guardrails medium       # raw IRC policy (instant)
.ircx set nickname newnick            # saved...
.ircx restart                         # ...applied

ircx.env - the dedicated config file

The plugin has many IRCX_* options. Rather than clutter your profile .env, point IRCX_CONFIG_FILE at a dedicated dotenv:

# in the profile .env
IRCX_CONFIG_FILE=/path/to/profile/ircx.env

It is loaded on top of the environment at startup, and .ircx set writes changes there. Keep only the secret *_PASSWORD vars and IRCX_CONFIG_FILE itself in .env; everything else can live in ircx.env.

Multi-network note: a second network foo (via IRCX_NETWORKS=foo) uses IRCX_FOO_* keys, and .ircx set on that network writes the correctly prefixed key automatically.


Enabling / disabling

Both prefixes are on by default. Set IRCX_COMMANDS_ENABLED=false to turn them off. Only authorised users (per IRCX_ALLOWED_USERS / verified account) are obeyed; anyone else's attempt is silently ignored.