Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions fern/changelog/2026-09-28.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# What's New: Week of September 28, 2026

1. **Composer Per-Conversation Approval Modes**: [Composer](/composer) now lets you choose when each conversation pauses for approval: ask before all changes, allow creates but ask before updates, deletes, runs, or publishing, bypass approvals entirely, or set custom permissions by resource and action.

2. **Eval Run History**: You can now browse your complete [Eval run history](/observability/evals-quickstart#view-run-history) with search and pagination, and share a specific run result by URL.

3. **Fixes and Improvements**:
- **Call logs**: The logs table now shows clearer, deterministic error messages for 4xx responses instead of retrying unnecessarily, and the date picker now lets you select the full retention window.
- **Voice fallback**: xAI terminal voice failures raised before a call starts are now delivered, the fallback voice no longer greets out of turn, and replacing a voice no longer consumes a second fallback.
42 changes: 17 additions & 25 deletions fern/composer.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -173,49 +173,42 @@ Composer understands voice agent architecture and Vapi's capabilities. It can cr

## Safety features

Composer includes safeguards to prevent accidental or irreversible changes to your account.
Composer includes safeguards to prevent accidental or irreversible changes to your account. You control how much Composer can do on its own with per-conversation approval modes.

### No deletion capability
### Approval modes

Composer **cannot delete any resources** — assistants, tools, phone numbers, squads, files, or anything else. This is a deliberate safety measure, not a limitation.
You choose when Composer pauses for your approval, and the setting persists for that conversation:

If you ask Composer to delete something, it directs you to do it yourself:
- **Ask before every change**: Composer requests approval for all creates, updates, deletes, runs, and publishes.
- **Ask before updates, deletes, runs, and publishing**: Composer creates new resources on its own, but asks before changing, deleting, running, or publishing anything that already exists.
- **Bypass approvals**: Composer applies changes without pausing.
- **Custom**: set permissions for each resource and action individually.

```txt title="Deletion request example"
You: "Delete my old test assistant"
Approval enforcement always happens on the server, and read operations never require approval.

Composer: "I'm not able to delete resources to prevent accidental data loss.
You can delete it yourself from the dashboard — use the sidebar on the left,
go to Assistants, select the one you want to remove, and delete it from there."
```

<Note>
Unlike creating or updating a resource (which can be undone or re-done), deletion is permanent. Requiring manual confirmation through the dashboard UI prevents accidental loss of important configurations.
</Note>

### Approval required for updates
### Deletion

When Composer modifies an existing resource (like updating an assistant's prompt, changing a voice setting, or editing a tool configuration), it pauses and asks for your explicit approval first.
Composer can delete resources such as assistants, tools, phone numbers, squads, and files. Deletion follows your approval mode: unless you have selected Bypass, Composer asks for your explicit approval before it deletes anything. Because deletion is permanent, keep an approval mode on if you want a confirmation step before a resource is removed.

**How the approval flow works:**
### How the approval flow works

<Steps>
<Step title="Composer proposes a change">
Composer shows you a summary of the update it wants to make.
Composer shows you a summary of the change it wants to make.
</Step>
<Step title="You review and respond">
The chat interface displays **Approve** and **Deny** buttons. Click **Approve** to proceed or **Deny** to cancel.
</Step>
<Step title="Composer applies the change (if approved)">
If approved, Composer makes the update and confirms. If denied, no changes are made.
If approved, Composer makes the change and confirms. If denied, no changes are made.
</Step>
</Steps>

```txt title="Approval flow example"
You: "Change my agent's voice to sound more energetic"
Composer: [Proposes update]
→ UI shows: "Update Resource — Updating voice settings on assistant xyz"
UI shows: "Update Resource, updating voice settings on assistant xyz"
[Approve] [Deny]
You: [Clicks Approve]
Expand All @@ -226,10 +219,9 @@ know if you'd like to adjust further."

**Key details about approvals:**

- **Tokens expire after 10 minutes** — if you don't respond in time, Composer needs to re-propose the change
- **Each approval is specific** — approval tokens are cryptographically bound to the exact change being made; multiple updates each require individual approval
- **Read operations don't require approval** — Composer can freely read and list your resources without permission
- **Creating new resources doesn't require approval** — new assistants, tools, and other resources are additive and non-destructive
- **Tokens expire after 10 minutes**: if you don't respond in time, Composer re-proposes the change.
- **Each approval is specific**: approval tokens are cryptographically bound to the exact change being made, so multiple changes each require individual approval.
- **Read operations don't require approval**: Composer can freely read and list your resources.

## Tips for best results

Expand Down
7 changes: 6 additions & 1 deletion fern/observability/evals-quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -1136,7 +1136,12 @@ For API details, see [Delete Eval](/api-reference/eval/delete).
- Target (assistant/squad)
- Status (pass/fail)
- Duration
4. Click any run to view detailed results
4. Search and paginate through your complete run history to find older runs
5. Click any run to view detailed results

<Tip>
To share a result, open a run and copy its URL. Anyone with access to your organization can open the link to view that same result, including older runs outside the current page.
</Tip>
</Tab>

<Tab title="cURL">
Expand Down
Loading