Implement explicit capability declarations in workflow YAML specs that restrict what each step can do. This enables safe delegation where child agents receive narrowed permissions.
Currently, agent permissions are implicit - whatever is in the container and environment. This makes it hard to reason about what an agent can do, and impossible to safely delegate with reduced permissions.
The actor model insight: when spawning a child, you can pass capabilities but can only narrow them, never expand. A research step might get read-only file access and web search, while a coding step gets file write but no web access.
Define capability types in workflow YAML. Example:
steps:
- name: research
run: research.md
capabilities:
files:
- path: _/gaia/*
mode: read-only
- path: _/gaia/research.txt
mode: read-write
tools: [web_search, read]
cost_limit: 0.50
network: true
Workflow-level defaults that steps inherit:
defaults:
capabilities:
tools: [read, write, edit, bash]
cost_limit: 1.00
network: false
steps:
- name: research
capabilities:
tools: [read, web_search]
network: true
Files to modify:
Pipeline: verification failed: Expected 1 commit on t-362 relative to live, got 0
Pipeline scheduler: failed to spawn agentd run
Pipeline scheduler: failed to spawn agentd run
Pipeline scheduler: started run=pipeline-omni-agentd-hs-t-362-1771554727 domain=Omni/Agentd.hs
Pipeline scheduler reset stale run pipeline-omni-agentd-hs-t-362-1771554727 (agentd reported running but no active container). Returning task to Open for requeue.
Pipeline scheduler: started run=pipeline-omni-agentd-hs-t-362-1771559763 domain=Omni/Agentd.hs
Pipeline scheduler: run=pipeline-omni-agentd-hs-t-362-1771559763 domain=Omni/Agentd.hs status=failed cost=0c error=OAuth login failed: OAuth login requires an interactive terminal. Please run this command in a terminal session, not in headless mode. (fund-spend=failed)
Reopened: prior Review transition came from pipeline auth failure, not successful task execution. Re-queued for normal processing.
Pipeline scheduler: started run=pipeline-omni-agentd-hs-t-362-1771560113 domain=Omni/Agentd.hs
Pipeline scheduler: run=pipeline-omni-agentd-hs-t-362-1771560113 domain=Omni/Agentd.hs status=done cost=18c (fund-spend=failed)
Ava triage: pipeline auto-run reached status=done but the agent made NO git commits and reported blockers (missing files, path mismatches, or need clarification). This task is not actually in review — there's nothing to review. Resetting status to Open so it can be re-scoped.
No commits found in any branch or reflog. Pipeline scheduler bug — see separate task. Agent runs produced nothing recoverable. Needs fresh re-attempt.
Pipeline: recovered completed dev run on startup