--- summary: "What the Moltbot system prompt contains and how it is assembled" read_when: - Editing system prompt text, tools list, or time/heartbeat sections - Changing workspace bootstrap or skills injection behavior --- # System Prompt Moltbot builds a custom system prompt for every agent run. The prompt is **Moltbot-owned** and does not use the p-coding-agent default prompt. The prompt is assembled by Moltbot and injected into each agent run. ## Structure The prompt is intentionally compact and uses fixed sections: - **Tooling**: current tool list + short descriptions. - **Skills** (when available): tells the model how to load skill instructions on demand. - **Moltbot Self-Update**: how to run `config.apply` and `update.run`. - **Workspace**: working directory (`agents.defaults.workspace`). - **Documentation**: local path to Moltbot docs (repo or npm package) and when to read them. - **Workspace Files (injected)**: indicates bootstrap files are included below. - **Sandbox** (when enabled): indicates sandboxed runtime, sandbox paths, and whether elevated exec is available. - **Current Date & Time**: user-local time, timezone, and time format. - **Reply Tags**: optional reply tag syntax for supported providers. - **Heartbeats**: heartbeat prompt and ack behavior. - **Runtime**: host, OS, node, model, repo root (when detected), thinking level (one line). - **Reasoning**: current visibility level + /reasoning toggle hint. ## Prompt modes Moltbot can render smaller system prompts for sub-agents. The runtime sets a `promptMode` for each run (not a user-facing config): - `full` (default): includes all sections above. - `minimal`: used for sub-agents; omits **Skills**, **Memory Recall**, **Moltbot Self-Update**, **Model Aliases**, **User Identity**, **Reply Tags**, **Messaging**, **Silent Replies**, and **Heartbeats**. Tooling, Workspace, Sandbox, Current Date & Time (when known), Runtime, and injected context stay available. - `none`: returns only the base identity line. When `promptMode=minimal`, extra injected prompts are labeled **Subagent Context** instead of **Group Chat Context**. ## Workspace bootstrap injection Bootstrap files are trimmed and appended under **Project Context** so the model sees identity and profile context without needing explicit reads: - `AGENTS.md` - `SOUL.md` - `TOOLS.md` - `IDENTITY.md` - `USER.md` - `HEARTBEAT.md` - `BOOTSTRAP.md` (only on brand-new workspaces) Large files are truncated with a marker. The max per-file size is controlled by `agents.defaults.bootstrapMaxChars` (default: 20000). Missing files inject a short missing-file marker. Internal hooks can intercept this step via `agent:bootstrap` to mutate or replace the injected bootstrap files (for example swapping `SOUL.md` for an alternate persona). To inspect how much each injected file contributes (raw vs injected, truncation, plus tool schema overhead), use `/context list` or `/context detail`. See [Context](/concepts/context). ## Time handling The system prompt includes a dedicated **Current Date & Time** section when the user timezone is known. To keep the prompt cache-stable, it now only includes the **time zone** (no dynamic clock or time format). Use `session_status` when the agent needs the current time; the status card includes a timestamp line. Configure with: - `agents.defaults.userTimezone` - `agents.defaults.timeFormat` (`auto` | `12` | `24`) See [Date & Time](/date-time) for full behavior details. ## Skills When eligible skills exist, Moltbot injects a compact **available skills list** (`formatSkillsForPrompt`) that includes the **file path** for each skill. The prompt instructs the model to use `read` to load the SKILL.md at the listed location (workspace, managed, or bundled). If no skills are eligible, the Skills section is omitted. ``` ... ... ... ``` This keeps the base prompt small while still enabling targeted skill usage. ## Documentation When available, the system prompt includes a **Documentation** section that points to the local Moltbot docs directory (either `docs/` in the repo workspace or the bundled npm package docs) and also notes the public mirror, source repo, community Discord, and ClawdHub (https://clawdhub.com) for skills discovery. The prompt instructs the model to consult local docs first for Moltbot behavior, commands, configuration, or architecture, and to run `moltbot status` itself when possible (asking the user only when it lacks access).