Prompt System
AgentFlow uses a modular prompt system where agent behavior is assembled from composable prompt blocks. Instead of writing monolithic system prompts, you select, order, override, and preview individual blocks — each controlling a specific aspect of agent behavior.How it works
Every agent’s system prompt is built from an ordered list of blocks. Each block is an independent unit — a set of instructions for a specific concern (personality, tool usage, artifact formatting, error handling, etc.). Blocks can be:- Enabled or disabled per agent or per user
- Reordered to change priority
- Overridden with custom content
- Previewed before saving to see the assembled prompt and token count
Block categories
| Category | Blocks | What they control |
|---|---|---|
| Core | soul, role, constitution, communication, instructions, answer_format | Agent identity, personality, communication style, response format |
| Capabilities | tool_guidance, error_handling, cached_results, sub_agent_context | How the agent uses tools, handles errors, leverages cached data |
| Artifacts | artifact_draft_email, artifact_draft_meeting_invite, artifact_draft_task, artifact_draft_slack_message | Output formatting for structured artifacts |
| Dynamic | datetime, available_skills, custom | Injected at request time — current timestamp, skill catalog, custom content |
MainAgent includes artifact blocks and skill awareness; EmailsAgent only includes email-specific artifact blocks; ResearchAgent has no artifact blocks at all.
Per-user prompt configuration
Users can customize which blocks are active for any agent, saving their configuration via the API. This enables power users to tune agent behavior without modifying the underlying agent code.SDK
REST API
/agent/{id}/subagents/{sub_id}/prompts/*.
Block types
Static blocks
Static blocks contain fixed text — agent personality, communication rules, formatting instructions. Their content is defined at the framework level and doesn’t change between requests.Dynamic blocks
Dynamic blocks generate content at request time:datetime— injects the current date and time for temporal awarenessavailable_skills— injects the skill catalog (name + description for each available skill)custom— injects user-provided custom context

