Internals

The prompt is never a secret.

Most agent products treat the system prompt as proprietary plumbing. GoTo Agents treats it as user-owned configuration: assembled from editable markdown templates, filled with data you can inspect, and viewable in full at any time. If an agent behaves oddly, you look at what it actually saw.

Templates at three scopes

The system prompt renders from system_template.md, resolved down the scope chain: the global default in .global/templates/, an optional workspace override, an optional agent-local override. Behavioral rules — how to use memory, how task mode works, how activities present — live in these templates as visible markdown instructions. PromptBuilder deliberately does the opposite of what its name suggests: it only resolves and formats data; it never injects behavior from Python.

What flows in

  • Agent identity and instructions (AGENT.md).
  • Workspace context (WORKSPACE.md).
  • Available skills and activities — name + description indexes for progressive disclosure.
  • Reference doc indexes per scope.
  • Project context: GOTOAGENTS.md and shared memory.
  • Profile context: PROFILE.md, profile memory, profile_state.
  • Mode context: active activity playbook, or task definition and parameters in task sessions.
  • Runtime working memory (RTContextView) — in-session scratch state.

Placeholders and secrets

Templates and configuration support placeholder resolution in several syntaxes — ${VAR} with optional defaults, Jinja2 {{ var }}, and single-brace {UPPER_CASE} style common in MCP URLs. Values come from the placeholder store, which keeps secrets encrypted at rest; unresolved placeholders are preserved visibly in output rather than silently swallowed, so a missing key looks like a missing key.

The render-prompt view

The payoff feature: render any agent's fully-assembled system prompt from the UI — every index, every injected file, exactly as the model receives it. This turns prompt debugging from guesswork into reading, and it's the transparency claim of the whole product made checkable: nothing shapes agent behavior that you can't open.

Where it lives

  • core/prompt_builder.py — data resolution and assembly.
  • core/placeholder_manager.py — placeholder syntaxes and encrypted values.
  • .global/templates/system_template.md — the editable global default (instance root).
  • core/rt_context_view.py — in-session working memory.