CEO Action Markers
Every action the CEO can take to operate the OS — tier, payload fields, and rejection reasons, in one reference.
The CEO operates the company by emitting action markers in its chat reply. Each marker triggers one side effect: the runtime runs it, hides the marker from the operator, and appends a short receipt.
This page is the catalog of every marker. For the operator-facing view — what the CEO can do and why each action sits where it does — see Operating a Company.
Tier model
- Autonomous — runs immediately, no approval. Used for reversible, low-impact changes.
- With approval — the CEO drafts the change; it lands only after the operator commits it in the Approvals window.
Every action is CEO-only. A non-CEO emitter is rejected silently.
Overview
Autonomous
| Marker | Domain | Function |
|---|---|---|
| INSTALL_SKILL | Skills | Install a skill on an agent |
| UNINSTALL_SKILL | Skills | Remove a skill from an agent |
| BIND_TOOL | Tools | Give an agent access to a tool |
| UNBIND_TOOL | Tools | Remove a tool from an agent |
| TOGGLE_CHANNEL | Channels | Enable or silence a channel |
| TOGGLE_WORKFLOW | Workflows | Enable or pause a workflow |
| TOGGLE_ROUTINE | Routines | Pause or resume a routine |
| ASSIGN_ROUTINE | Routines | Change who runs a routine |
| DISPATCH_ROUTINE | Routines | Fire a routine now (confirm-tier) |
| SET_TASK_STATUS | Tasks | Move a task between board columns |
| COMMENT_TASK | Tasks | Comment, mention and wake an agent |
| EDIT_TASK | Tasks | Patch a task's metadata |
| CREATE_TASK | Tasks | Turn a request into a task (self) |
| DELEGATE | Tasks | Route a task to a teammate |
With approval
| Marker | Domain | Function |
|---|---|---|
| PROPOSE_DEPLOYMENT | Agents | Propose deploying a new agent |
| PROPOSE_PROFILE_EDIT | Company | Edit the company profile |
| PROPOSE_KNOWLEDGE_EDIT | Company Brain | Create, update or delete a knowledge file |
| PROPOSE_ROUTINE_EDIT | Routines | Edit a routine's mandate, or delete it |
| PROPOSE_SKILL_LIBRARY_EDIT | Skills | Set allowed roles, or remove a library skill |
| PROPOSE_TOOL_EDIT | Tools | Set roles / status, or delete a tool |
| PROPOSE_WORKFLOW_DELETE | Workflows | Delete a workflow |
| PROPOSE_TASK_DELETE | Tasks | Permanently delete a task |
Details
INSTALL_SKILL
Autonomous · Skills. Installs a catalog skill onto an agent; active on its next task.
| Field | Type | Required | Notes |
|---|---|---|---|
| deploymentId | uuid | yes | Target agent |
| skillKey | string | yes | Catalog key (owner/repo/slug) |
Rejected when: skill not found, role not allowed, skill belongs to another company, target retired, payload invalid.
UNINSTALL_SKILL
Autonomous · Skills. Removes a skill from an agent. Idempotent.
| Field | Type | Required | Notes |
|---|---|---|---|
| deploymentId | uuid | yes | Target agent |
| skillKey | string | yes | Key currently installed |
Rejected when: target not in company, target retired, payload invalid.
BIND_TOOL
Autonomous · Tools. Gives an agent access to a provisioned tool; available next task.
| Field | Type | Required | Notes |
|---|---|---|---|
| deploymentId | uuid | yes | Target agent |
| toolId | uuid | yes | Tool from the catalog |
Rejected when: tool not found, role not allowed, tool belongs to another company, target retired, payload invalid.
UNBIND_TOOL
Autonomous · Tools. Removes a tool from an agent. Idempotent.
| Field | Type | Required | Notes |
|---|---|---|---|
| deploymentId | uuid | yes | Target agent |
| toolId | uuid | yes | Tool currently bound |
Rejected when: target not in company, target retired, payload invalid.
TOGGLE_CHANNEL
Autonomous · Channels. Enables or silences a connected channel. Credentials stay intact.
| Field | Type | Required | Notes |
|---|---|---|---|
| channelType | string | yes | e.g. telegram |
| enabled | boolean | yes | true on, false silence |
Rejected when: channel not connected, payload invalid.
TOGGLE_WORKFLOW
Autonomous · Workflows. Resumes or pauses a workflow. Definition preserved.
| Field | Type | Required | Notes |
|---|---|---|---|
| workflowYamlId | string | yes | Workflow id |
| enabled | boolean | yes | true resume, false pause |
Rejected when: workflow not found, payload invalid.
TOGGLE_ROUTINE
Autonomous · Routines. Pauses or resumes a routine. Triggers and assignee preserved.
| Field | Type | Required | Notes |
|---|---|---|---|
| routineId | uuid | yes | Routine id |
| active | boolean | yes | true resume, false pause |
Rejected when: routine not found, routine archived, payload invalid.
ASSIGN_ROUTINE
Autonomous · Routines. Changes which agent runs a routine.
| Field | Type | Required | Notes |
|---|---|---|---|
| routineId | uuid | yes | Routine id |
| assigneeDeploymentId | uuid or null | yes | null clears the assignee (routine pauses) |
Rejected when: routine not found, assignee not in company, assignee retired, payload invalid.
DISPATCH_ROUTINE
Autonomous (confirm-tier) · Routines. Fires a routine once, now. The CEO confirms with the operator before emitting. Creates a wrapper task and wakes the assignee; de-duped within a 5-minute window.
| Field | Type | Required | Notes |
|---|---|---|---|
| routineId | uuid | yes | Routine id |
Rejected when: routine not found, routine not active, no assignee, already running, payload invalid.
SET_TASK_STATUS
Autonomous · Tasks. Moves a task between board columns. Respects the same rules as the board: in_progress can't be set by hand, and done is terminal — reaching it bills the task and it can't be reopened from chat.
| Field | Type | Required | Notes |
|---|---|---|---|
| taskId | uuid | yes | From the active board |
| status | enum | yes | todo, in_progress, review, done, blocked |
Rejected when: task not found, task archived, task locked (agent running), transition not allowed, payload invalid.
COMMENT_TASK
Autonomous · Tasks. Posts a CEO comment on a task. An @Name mention wakes that agent if they're assigned to the task.
| Field | Type | Required | Notes |
|---|---|---|---|
| taskId | uuid | yes | From the active board |
| body | string | yes | May include @Name |
Rejected when: task not found, task archived, payload invalid (empty or too long).
EDIT_TASK
Autonomous · Tasks. Patches a task's metadata. At least one field required. Does not change status, reassign, or rewrite the description body.
| Field | Type | Required | Notes |
|---|---|---|---|
| taskId | uuid | yes | From the active board |
| title | string | no | New title |
| priority | enum | no | low, medium, high, urgent |
| taskType | enum | no | feature, bug, research, docs, chore, other |
| effortLevel | enum | no | xs, s, m, l, xl |
| tags | string list | no | Replaces the whole list |
| dueDate | ISO-8601 or null | no | null clears it |
| acceptanceCriteria | string or null | no | null clears it |
Rejected when: task not found, task archived, task locked, payload invalid (no fields or value out of range).
CREATE_TASK
Autonomous · Tasks. The CEO turns a request into a task assigned to itself, runs it in task-mode, and the result is synthesized back into chat. One create or delegate per reply.
DELEGATE
Autonomous · Tasks. The CEO routes work to a teammate by their agent id. One task is created, assigned to them. One create or delegate per reply.
PROPOSE_DEPLOYMENT
With approval · Agents. Proposes adding an agent. Carries only catalog selections — never an endpoint, credential, or signature. The operator enters the gateway token and signs in the deploy modal.
| Field | Type | Required | Notes |
|---|---|---|---|
| role | enum | yes | From the proposable roles |
| runtime | enum | yes | A registered runtime |
| skills | string list | no | Catalog keys the role may use |
| suggestedName | string | no | Display name; editable in the modal |
Rejected when: role not allowed, role already filled, skill not found, runtime not registered, payload invalid.
PROPOSE_PROFILE_EDIT
With approval · Company. Drafts changes to the company profile. Include only the fields to change (at least one). List fields replace the whole list. The payout wallet cannot be touched — it is absent from the payload and stripped if sent.
| Field | Type | Notes |
|---|---|---|
| tagline, niche | string | Short text |
| brandVoice, mission, vision, targetAudience | string | Long text |
| coverageScope, coverageExcluded, coreOffering | string | Long text |
| contentPillars, forbiddenWords, usps, serviceCatalog, chainsCovered | string list | Replaces the list |
| contactEmail, salesEmail, phone | string | Contact |
| websiteUrl, blogUrl, newsletterUrl, docsUrl, logoUrl | string | Presence |
Rejected when: payload invalid (no fields).
PROPOSE_KNOWLEDGE_EDIT
With approval · Company Brain. Drafts a create, update, or delete of a Company Brain file, addressed by path.
| Field | Type | Required | Notes |
|---|---|---|---|
| op | enum | yes | create, update, delete |
| path | string | yes | /brain/<slug>.md |
| content | string | on create | Full markdown body; replaces the file |
| visibility | enum | no | all, tier:head, ceo_only |
On update: include at least one of content or visibility. On delete: path only.
Rejected when: payload invalid.
PROPOSE_ROUTINE_EDIT
With approval · Routines. Drafts a mandate edit or delete of a routine. Covers only title / description / priority and delete — not pause/resume, reassign, run-now (autonomous), or schedule.
| Field | Type | Required | Notes |
|---|---|---|---|
| op | enum | yes | update, delete |
| routineId | uuid | yes | Routine id |
| title | string | no | Update only |
| description | string | no | Update only |
| priority | string | no | Update only |
On update: include at least one of title, description, priority.
Rejected when: payload invalid.
PROPOSE_SKILL_LIBRARY_EDIT
With approval · Skills. Drafts a change to a company-imported library skill: set its allowed roles, or remove it. Platform built-ins cannot be edited here.
| Field | Type | Required | Notes |
|---|---|---|---|
| op | enum | yes | set_roles, remove |
| skillKey | string | yes | Canonical owner/repo/slug |
| allowedRoles | role list | on set_roles | Empty list = unrestricted |
Rejected when: payload invalid.
PROPOSE_TOOL_EDIT
With approval · Tools. Drafts a tool change: set allowed roles, pause/activate, or delete. Credentials and config are out of scope (operator-only).
| Field | Type | Required | Notes |
|---|---|---|---|
| op | enum | yes | set_roles, set_status, delete |
| toolId | uuid | yes | Tool id |
| allowedRoles | role list | on set_roles | Empty list = unrestricted |
| status | enum | on set_status | active, paused |
Rejected when: payload invalid.
PROPOSE_WORKFLOW_DELETE
With approval · Workflows. Drafts deletion of a workflow. Enable/disable without deleting is autonomous.
| Field | Type | Required | Notes |
|---|---|---|---|
| workflowYamlId | string | yes | Workflow id |
Rejected when: payload invalid.
PROPOSE_TASK_DELETE
With approval · Tasks. Drafts permanent deletion of a task. To take it off the board without deleting, archive instead.
| Field | Type | Required | Notes |
|---|---|---|---|
| taskId | uuid | yes | From the active board |
Rejected when: payload invalid.