Two Gates, One Symptom
For a Run to use a Login or Secret, two independent conditions must hold — and failing either one produces the same symptom:- It must be attached to the Agent’s revision. Attaching is an allowlist: the Run sees only the Logins and Secrets explicitly attached in the builder, not everything the team owns.
- It must be visible to the person the Run runs as — either Team-shared, or that person’s own Personal item.
Sharing Needs a Manager
On the Logins and Secrets page, items live in two sections — Team (“Shared across your workspace. All team members can use these.”) and Personal (“Only you can access these.”). The Share with team action requires the Manager role or above; Builders and Members cannot share their own items. Practical consequences:- Plan for it: the person building the Agent is often a Builder, so getting Logins to Team is a two-person step — build it into your rollout, not into the morning it breaks.
- Sharing never exposes values. Teammates can use a shared Login or Secret in Runs, but can’t read the password or key — only Duvo uses it, server-side, during the Run.
- Make personal is a transfer, not an undo: un-sharing moves ownership to whoever un-shared it, and Agents relying on it stop working for everyone else. Treat un-sharing a Login that production Agents use as a breaking change.
Logins Fail Soft, Connections Fail Hard
When access is missing, the two credential types fail very differently — knowing the signatures saves an hour of misdiagnosis:- A missing Login is quiet. The Run continues; the browsing tool simply reports that no credentials are available for the domain, and the Agent improvises — often ending in a “completed” Run that did the wrong thing. This is why the AOP should say: “If you cannot sign in to [system], stop and fail with the reason — do not work around it.”
- A missing or broken Connection is loud. The Run aborts before it starts, with the error
Could not resolve Connection: [name]. Loud is good — but remember Connections like Gmail or Slack are personal by nature, so each teammate must authorize their own account before their first Run.
Expect to Debug Without Seeing Their Run
Only the team Owner and Administrator can open other people’s Runs — a Manager or Builder debugging a teammate’s failure can’t read the failing transcript. So give teammates a self-serve script instead of asking for screenshots:Have them open their failing Run
They can always see their own Runs in the Runs List, including the transcript and evaluation.
Look for the access signature
A line saying no credentials were available for the site means a Login gate (visibility or attachment); a
Could not resolve Connection error at the start means their own account isn’t connected.Fix at the right gate
Connection error → they authorize it on the Connections page. Login not found → a Manager shares the Login to Team (or checks it’s attached to the Agent), then re-run.
What Stays Personal by Design
Not everything should be shared — some layers are per-person on purpose, and knowing which prevents a different class of confusion:- Memory is personal. Notes and preferences an Agent accumulates apply only to that user’s Runs. A “rule” one person taught the Agent via Memory does not exist for anyone else — team rules belong in the AOP. See Where Knowledge Belongs.
- Schedules and triggers belong to their creator and run with that person’s access — the offboarding and ownership habits in Connections and Logins That Don’t Break are the other half of this page.
- OAuth Connections are per-account. Sharing an Agent never shares your Gmail.
Related
Connections and Logins That Don't Break
The run-as rule, expiring credentials, and the auto-pause safety net.
Logins and Secrets
Managing website Logins and env-var Secrets, Team vs Personal.
Where Knowledge Belongs
AOP, Skills, Files, or Memory — and why Memory is per-user.
Roles and Permissions
What Owners, Administrators, Managers, and Builders can each do.