---
title: "Ask Fabro sidebar, scoped run tools, and agent todos"
date: "2026-05-22"
---

<Warning>
**Fabro run-management tools now require an explicit per-run opt-in.** Existing workflows that expected agents to create, search, inspect, or control Fabro runs must enable the tools in run configuration.

To migrate:
1. Add `[run.agent]` to the workflow, project, or user run settings that should expose these tools.
2. Set `fabro_tools = true`.
3. Leave the setting unset or `false` for runs that should not grant run-management capabilities.
</Warning>

## Ask Fabro ships in the run sidebar

Ask Fabro is now wired into run pages end to end. The sidebar uses real run session APIs, streams assistant responses, can call scoped run tools, and starts with a welcome state that offers concrete example prompts.

Each turn is oriented with a fresh run snapshot so answers start from the current run status, stage state, and recent activity. The panel is resizable, persists its session per run tab, renders tool calls in the narrow sidebar, and hides internal reasoning deltas from the conversation.

## Scoped Fabro tools for workflow agents

Built-in Fabro run tools are now gated twice: first by the resolved `[run.agent] fabro_tools` setting, then by the worker JWT scope. The server remains authoritative for authorization, while workers only register the tool schemas when their token includes the run-tool scope.

```toml
[run.agent]
fabro_tools = true
```

Ask Fabro also uses an effective read-only tool policy so it only advertises tools it can actually call. Hidden or denied tools are blocked before execution, which keeps model-visible capabilities aligned with server policy.

## Event-sourced agent todos

OpenAI and Anthropic agent profiles now persist todo and task changes as run events. OpenAI `update_plan` calls and Anthropic task tools emit `todo.created`, `todo.updated`, and `todo.deleted`, then replay into the run projection.

This gives Fabro a durable view of agent task state instead of treating todo updates as transient model-side bookkeeping. The web app refreshes run state when todo events arrive, so projected task lists can update live.

## More

<Accordion title="API">
- Run projections now include event-sourced todo lists from agent task tools
- Ask Fabro readiness and default model data are exposed on run summaries
</Accordion>

<Accordion title="CLI">
- Fabro workers now register run-management tools only when their worker token carries `agent:run_tools`
</Accordion>

<Accordion title="Workflows">
- `fabro_run_create` now supports `goal_file` and preserves it as a file-backed run goal
- `fabro_run_create` now accepts the advertised workflow-string shorthand in MCP clients
- New `fabro_run_get` tool provides read-only run inspection without mutating workflow state
- `run.checkpoint.skip_git_hooks` can bypass Git hooks during checkpoint commits
- Pair user and system messages now appear in the stage Thread tab and activity timeline
</Accordion>

<Accordion title="Fixes">
- Fixed Ask Fabro session responses not rendering in the sidebar
- Fixed Ask Fabro markdown spacing and heading sizes in narrow panels
- Fixed reasoning deltas leaking into Ask Fabro output
- Fixed archived run board updates not refreshing active and archived queries consistently
- Fixed retryable mid-stream LLM failures being treated as terminal agent errors
- Fixed agent edit operations by reading raw sandbox file contents before applying patches
</Accordion>

<Accordion title="Improvements">
- The run stage sidebar can now collapse to an icon rail while preserving status indicators
- Ask Fabro example prompts now use fuller, action-oriented text
- Agent context observability now records memory, activated skills, and MCP tools as run events
- Anthropic agent sessions now support task lookup and task reminders
- Run board archived columns now stay in a predictable order after archive and unarchive actions
- OpenAI `apply_patch` handling is now compatible with Codex-style patch grammar
</Accordion>
