Tools

July 2, 2026 · View on GitHub

OpenHermit builds toolsets per turn from available runtime capabilities and the resolved user role. Tools are wrapped by the approval gate according to the agent's security policy (agents.security_json).

Built-In Tools

ToolPurpose
execRun a shell command through the configured exec backend
file_readRead a file by absolute path (supports line ranges via offset/limit, base64 for binary; 5 MiB cap)
file_writeWrite a file (overwrite / create / append modes; auto-creates parent dirs)
file_editFind-and-replace text in a file (exact match, optional replace_all)
file_listList directory entries (files + subdirectories)
file_statStat a path: type, size, mtime (returns null if missing)
file_deleteDelete a single file (no recursive)
web_searchSearch the web through the configured web provider
web_fetchFetch and extract web page content
memory_getRead one memory by ID
memory_listList memories by prefix
memory_recallSearch memories
memory_addCreate or replace a memory
memory_updateUpdate memory content/metadata
memory_deleteDelete a memory
instruction_updateUpdate an instruction key
user_listList users, roles, and identities
user_identity_linkLink an identity to a user (owner)
user_identity_unlinkRemove an identity link (owner)
user_role_setSet a user's role for the agent (owner)
user_mergeMerge one user into another (owner)
identity_link_requestIssue a short-lived token for cross-channel identity linking (any role)
identity_link_confirmRedeem a link token from a different channel to join identities (any role)
session_listList sessions (who it's with, type, canSend) — filter by channel/type/user_id/search, paginate, newest first
session_readRead session history
session_summaryRead description, working memory, and recent activity
session_sendSend a proactive message through a connected channel
schedule_listList schedules
schedule_createCreate cron or once schedules
schedule_updateUpdate schedule status/prompt/timing
schedule_deleteDelete a schedule
schedule_triggerRun a schedule immediately
schedule_runsList schedule run history
mcp_statusShow MCP connection/tool status
mcp_enableEnable/connect an MCP server for this agent
mcp_disableDisable/disconnect an MCP server for this agent

Introspection-only tools:

  • working_memory_update
  • session_description_update

Connected MCP server tools are exposed as:

mcp__{serverId}__{toolName}

Runtime Requirements

Tool areaRequired capability
execagentId, workspace, ExecBackendManager
fileagentId, workspace, ExecBackendManager (delegates to FileBackend on the exec backend)
webconfigured web provider
memorymemoryProvider
instructioninstructionStore
users (owner)userStore, owner role
identity link (any)userStore, currentUserId, currentChannel, currentChannelUserId
sessionssessionStore
schedulesscheduleStore
session_sendmatching channel outbound adapter
MCP managementMcpClientManager and MCP store

Access Policy

Tool access is controlled by the unified policy model (see access-policy.md). Each tool declares a ToolPolicy with defaultGrants. DB policy rows override defaults per-agent.

Tools whose evaluateAccess returns deny for the calling principal are excluded from the tool list — the agent never sees them.

Default access by role

RoleTypical tool access
ownerall tools
userfile read/list/stat, memory, web, sessions, identity link
guestweb, identity link (all else denied by default)

Owners can widen or narrow any tool's access via policy rows or the Policies admin tab.

Approval

When a policy row has effect: 'require_approval', the system supports two modes:

  • Real-time: owner is in an interactive session → inline approve/reject UI prompt (ApprovalGate).
  • Async: owner is on a different channel → ApprovalRequest persisted, owner notified via configured channel (e.g. Telegram) with approve/reject buttons. The agent stops and tells the user to wait.

Approved requests are cached with a TTL (default 60 minutes). Owners can grant persistent approval to auto-create a permanent allow policy row.

See access-policy.md for full details on the approval flow and policy configuration.