Overview
The agent decides when and what to send — you don’t create embeds manually. Buttons either perform a direct operation (complete a task, delete an event) or open a conversation with the agent through the inquiry system. Embeds sent from background forks or interactive forks are tagged with a footer indicating their source.What embeds include
Each embed has a title and can include body text, a color-coded accent bar, structured fields, and up to five interactive buttons.Developer reference: discord_embed parameters
Developer reference: discord_embed parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
title | string | Yes | — | Embed heading |
description | string | No | — | Body text below the title |
color | string | No | "blue" | Embed accent color |
fields | array | No | [] | Structured name/value pairs |
buttons | array | No | [] | Interactive buttons attached below the embed |
critical | boolean | No | false | Bypasses per-session limit, busy check, and ping budget in background forks |
Colors
| Value | Meaning |
|---|---|
blue | Informational (default) |
green | Success / completion |
red | Urgent / error |
yellow | Warning |
purple | Accent — also used for fork entry embeds |
Fields
Fields render as labeled sections within the embed — inline fields appear side-by-side, non-inline fields stack vertically.Buttons
Each button has a label and an optional style (defaults to grey).| Style | Appearance |
|---|---|
primary | Blurple (Discord accent) |
secondary | Grey |
success | Green |
danger | Red |
Button actions
Buttons fall into two categories: direct actions that execute immediately, and inquiry buttons that route a prompt back through the agent.- Direct actions
Direct actions perform a single operation and respond with a temporary message only you can see. No agent involvement. If something goes wrong (for example, a Google API error), the error reason is shown the same way.
| Button | What it does |
|---|---|
| Mark complete | Marks a Google Tasks item complete |
| Delete task | Deletes a Google Tasks item |
| Delete event | Deletes a Google Calendar event |
| Close | Deletes the embed message |
Developer reference: action string formats
Developer reference: action string formats
Button behavior is determined by an
action string encoded in the button. Direct actions use patterns like task_done:<task_id>, task_del:<task_id>, event_del:<event_id>, and dismiss. Inquiry buttons use the format agent:<prompt>, where <prompt> is the instruction the agent receives when clicked.Inquiry buttons
When the agent sends an inquiry button, it stores a prompt behind the scenes. Clicking the button sends that prompt to the agent, and the agent responds in your conversation. If the button was sent by a background fork, clicking it opens an interactive fork that resumes from that fork’s session — so you can continue where the background task left off. Otherwise the prompt is processed in your current session. Inquiry buttons expire after 7 days. If you click an expired button, you’ll see an expiration notice.Developer detail: how inquiry buttons work internally
Developer detail: how inquiry buttons work internally
Fork embeds
Forks produce their own embeds at entry and exit, separate from the embeds the agent sends during conversation.Fork entry
When a fork starts (via/fork, an agent action, or an inquiry button), a purple “Forked Session” embed appears with three buttons:
| Button | Style | Action |
|---|---|---|
| Save Context | Green | Promotes fork context to the main session |
| Report | Blurple | Exits the fork and sends a summary to the main session |
| Exit Fork | Red | Discards the fork cleanly |
Fork exit
When a fork ends, a “Fork Ended” embed is sent with a color indicating the exit strategy:| Exit strategy | Color |
|---|---|
| Save | Green |
| Report | Blue |
| Exit (discard) | Grey |
Persistence
Buttons remain functional across bot restarts:- Direct action buttons (task operations, dismiss, fork controls) never expire — their data is encoded in the button itself.
- Agent inquiry buttons expire after 7 days — the stored prompt is cleaned up after that.
Background fork behavior
Embeds sent from the main session or interactive forks are always delivered. In background forks, embeds are subject to additional constraints:- Ping budget — each embed consumes one ping from the ping budget. When the budget is exhausted, the embed is blocked and the agent is told to use reporting instead.
critical: true— bypasses budget limits and busy checks. Use for things you’d be devastated to miss.allow-ping: false— when set in the background fork config, embeds are disabled entirely.critical: truedoes not override this.- Busy state — when you’re mid-conversation, non-critical embeds from background forks are blocked. The agent reports findings to the main session instead.
Next steps
Forks
Interactive and background fork lifecycle, exit strategies, and idle timeout.
Ping budget
How the ping budget controls background fork notifications.
Discord tools
Full reference for all Discord tools including discord_embed.
Slash commands
Discord slash commands for managing forks, permissions, and more.
