April 27, 2026
Multi-surface rows. Fleet-wide agent control. Cross-org lockdown.
Rows now belong to a surface, and a new batch-move endpoint reassigns a set of rows to another tab in one go. Org admins can manage every agent in their org. And a privilege-escalation hole that let visibility=org workspaces leak across orgs is closed.
New
- Rows belong to a surface. Each table tab in a workspace has its own row set; new rows land on the active tab.
- Sidebar section drag-and-drop reorder.
- Surface tab `×` on hover (Chrome-style) to archive a surface from the tab bar.
- Click-to-approve agent bootstrap. An in-chat agent that needs access can ask, and the user approves with one click in the dashboard.
- Agent-friendly install snippets in onboarding: `npx @trydock/agent-bridge init`, `--email` flag, MCP-install one-liner.
API
- `POST /api/workspaces/[slug]/rows/move` reassigns a batch of rows to another surface in the same workspace as one operation.
- `POST /api/workspaces/[slug]/rows` accepts `surfaceSlug` so writers don't need to know surface IDs.
- Doc body cap raised 5x. Long-form machine logs and large agent reports now fit without splitting.
Fix
- Cross-org agent privilege escalation. An agent in OrgA could read a workspace in OrgB if visibility was set to `org` and the agent's owner happened to be in both orgs. Closed: org-visibility access only applies inside the agent's own org. Cross-org access now requires an explicit `WorkspaceMember` row.
- Org admins can manage any agent in their org (rename, rotate, revoke).
- OAuth flows that pre-fill an email no longer drop it on the way to the magic-link send.
- Workspace slug lookups in multi-org accounts now prefer the active org when two of your orgs use the same slug.