You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Ask a person only what they can answer when connecting an agent - #915
Someone connecting their agent from My › Agent got asked by Claude to pick a lowercase profile name, and whether an older agent on their computer was the one they meant. The connect skill told it to: "Agree a profile name" in first-time setup, and "read last.json and confirm it" when no profile is named. Its trust options also reached people under their internal names (operator, allowlist, project).
What
In skills/basecamp-connect/SKILL.md:
First-time setup, step 1. Use the profile the person names. Otherwise pick one yourself from the agent's name, and don't ask them to choose or confirm it.
Invocation, step 1. Asked to connect a new agent, or one no profile here is connected as, go straight to first-time setup and don't ask about other agents' profiles.
A taken name. If you chose a name that turns out to hold a person's login, pick another instead of asking.
Who may give it work. Not asked. It's the operator alone unless they said otherwise, and the closing summary tells them so and that they can just ask to let others. When they do ask, each choice gets a plain sentence without the mode names. Setup runs once they've named the projects, without another confirmation.
Plain words. Starting the connector, Claude tells the person their agent picks up work while this session is open, and leaves the connector, watcher, monitor and profiles unnamed.
Identity, right after approval. The person chose the agent on the approval page, so Claude tells them its name and goes on instead of asking whether it's the right one. A profile that already held a credential still needs their word (unconfirmed-identity.yml).
Projects. A personal agent is already in all of its owner's projects (Basecamp adds it on approval), so Claude serves every project the agent is in without asking, tells the person it picks up their requests in all of them and that they can ask it to skip some, and lists again after a moment if none show yet. Only an agent that isn't personal gets asked to be added somewhere. A project it joins later needs the person to ask. Ids stay out of what Claude says. When the agent can't list projects, Claude uses a profile that isn't an agent's, never another agent's. Before, Claude called the computer's other agent "your own login".
basecamp/bc3#13948 makes the matching change to the bootstrap that the My › Agent line points at. Its description has before and after transcripts of the whole flow.
Verification
bin/ci passes, including skill drift.
The model evals (make -C skill-evals eval-connect) didn't run, because they need ANTHROPIC_API_KEY. first-time-setup.yml names its profile in its context, which "Use the profile the person names" still honors.
Summary by cubic
Stops the Basecamp connect skill from asking people questions they can't answer, so connecting an agent from My › Agent no longer prompts them to pick a CLI profile name, confirm the agent they meant on this computer, or choose who may give it work.
Claude picks the profile name itself from the agent's name, unless the person names one, and picks the next name (build-bot-2, then -3) if that one already holds another agent's or a person's login.
Asked to connect a new agent, it goes straight to first-time setup and leaves other agents' profiles alone.
Since the person chose the agent on the approval page, it names the agent and goes on instead of asking.
Who may give the agent work isn't asked: unless the person already said otherwise, only the operator can, and setup runs once projects are named, without a final confirm.
A personal agent is already a member of its owner's projects, so it serves all of them without asking and the owner's project list stands in when it can't list its own; for any other agent, it asks which of the projects it's in and the owner adds it where they want it. A project it joins later isn't served until the person asks.
Starting the connector, it says the agent picks up work while this session is open, and leaves the connector, watcher, monitor and profiles unnamed.
Written for commit 36a232b. Summary will update on new commits.
The connect skill had Claude "agree a profile name" with the person, read the
remembered agent and ask them to confirm it before connecting a new one, and
list the trust modes by their internal names. People connecting their agent
from My › Agent got asked to name a CLI profile and about other agents on
their computer.
Claude now picks the profile name itself, goes straight to first-time setup
when asked to connect a new agent, leaves other agents' profiles alone, and
explains who may give the agent work in plain sentences.
The reason will be displayed to describe this comment to others. Learn more.
🟢 Approved
The focused guidance changes preserve identity and credential safeguards, with no blocking issues identified; model evaluations remain unrun.
No open issues 🎉
What changed in this PR
Updates the agent-connect skill to avoid asking people about internal CLI details while preserving credential safeguards.
Changes:
Choose profile names automatically unless the person supplies one.
Route new agents directly to setup and avoid overwriting personal logins.
Explain trust options without internal mode names.
[!TIP]
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.
File
Description
skills/basecamp-connect/SKILL.md
Simplifies profile selection, setup routing, and trust explanations.
…ng point
Right after the person approved the connection, the Identity rule still had
Claude ask whether the agent was the right one. They chose it on the approval
page, so Claude now tells them its name and goes on.
Projects step: Claude listed projects "with the person's own profile", took the
computer's default profile (another agent) for it, and called that the
person's login. It now uses a profile that isn't an agent's, or none. It also
offers all of the agent's projects by default, asks a new agent's owner to add
it where they want it, says this is a starting point, and keeps ids to itself.
First-time setup asked who may give the agent work, then asked the person to
confirm everything before setup. Now it's the operator alone unless they said
otherwise, the closing summary tells them so and that they can just ask to let
others, and setup runs once they've named the projects.
Retry automatically chosen names that belong to other agents
skills/basecamp-connect/SKILL.md:464
An automatically chosen name can also belong to another agent. For example, connecting a new “Helper” when helper holds a different agent follows the preceding oauth_type agent branch and skips approval. Identity confirmation then asks about the unrelated agent and stops setup when the person rejects it. For an automatically named new connection, leave occupied agent profiles untouched and retry with an unused name, just as for a person's login.
Avoid profile name collisions with existing agent credentials
skills/basecamp-connect/SKILL.md:448
For a new-agent request, an automatically chosen name can collide with another agent's profile (for example, two names that normalize to helper). The oauth_typeagent branch then skips connecting, and the identity check asks about the old agent or stops setup. When choosing a profile for a new agent, treat an existing agent credential as a taken name too: choose another name and check it before continuing.
Auto-selected agent name can collide with existing profiles
skills/basecamp-connect/SKILL.md:448
An automatically chosen name can also collide with another agent's profile. For example, a new “Build Bot” can select build-bot even though that profile holds a different agent's credential. The oauth_type: agent branch then treats it as already connected, and the identity rule asks about the older agent or stops setup. For an explicitly new agent, choose an unused suffixed name instead; preserve identity confirmation when intentionally reusing an existing profile.
Fallback incorrectly uses the person's accessible projects
skills/basecamp-connect/SKILL.md:510
The fallback lists the person's accessible projects, not the agent's memberships. A shared agent might belong to Redesign while the person also sees Marketing. Treating both results as the agent's projects makes setup fail when it checks Marketing as the agent (internal/connector/setup/checks.go:404–428). Before applying the serve-all default, scope the fallback to the agent's account and verify membership using each project's people list.
…t list
Claude picks a new agent's profile name itself now, so the name it picks can
already hold another agent: it picks the next one (build-bot-2) instead of
treating that agent as this one. And when the agent can't list its projects,
the person's list stands in only for a personal agent, which follows its
owner; for any other agent Claude asks which of them it's in.
Answering the two findings from Copilot's review summaries that have no thread. Both are fixed in 36a232b.
An auto-chosen name can collide with another agent's profile (SKILL.md, first-time setup step 1). Fixed. When Claude chose the name for a new agent and auth status shows an agent already there, it's another agent's profile. Claude leaves it alone and tries the next name (build-bot-2, then -3). A profile the person named keeps the old meaning: it's already connected, and Claude doesn't connect again.
The fallback lists the person's projects, not the agent's (step 3). Fixed, as in the thread. The person's list counts as the agent's only for a personal agent. For any other agent, Claude asks.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Fallback project discovery must use the agent's account to avoid selecting unrelated projects for multi-account users.
No open issues 🎉
1 previously missed issue
In code that hasn't changed since last review
Pin fallback project listing to the agent's bound account
skills/basecamp-connect/SKILL.md:512
Pin the fallback project listing to the agent's account. A person's profile can default to a different account (internal/config/config.go:707–709), while connector setup uses the agent profile's bound account (internal/commands/connect.go:1004–1030). The new serve-all default can therefore select unrelated project IDs and fail setup for multi-account users, even when the personal agent follows its owner. Pass --account with the agent's bound account when listing through the person's login.
Answering the finding in Copilot's review of 36a232b, pin the fallback project listing to the agent's bound account (SKILL.md, step 3). Fixed in b2577f2. The fallback lists the person's projects with --account set to the account_id the agent's auth status reports, because the person's login may default to another account. That's the same reason the skill already gives for reading the operator's name. bin/ci passes.
When the agent can't list its own projects, the basecamp-connect skill's fallback now passes --account with the account_id the agent's auth status reports, so connector setup reads projects in the agent's bound account for someone in more than one account. Follow-up to #915.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Someone connecting their agent from My › Agent got asked by Claude to pick a lowercase profile name, and whether an older agent on their computer was the one they meant. The connect skill told it to: "Agree a profile name" in first-time setup, and "read
last.jsonand confirm it" when no profile is named. Its trust options also reached people under their internal names (operator, allowlist, project).What
In
skills/basecamp-connect/SKILL.md:unconfirmed-identity.yml).basecamp/bc3#13948 makes the matching change to the bootstrap that the My › Agent line points at. Its description has before and after transcripts of the whole flow.
Verification
bin/cipasses, including skill drift.make -C skill-evals eval-connect) didn't run, because they needANTHROPIC_API_KEY.first-time-setup.ymlnames its profile in its context, which "Use the profile the person names" still honors.Summary by cubic
Stops the Basecamp connect skill from asking people questions they can't answer, so connecting an agent from My › Agent no longer prompts them to pick a CLI profile name, confirm the agent they meant on this computer, or choose who may give it work.
build-bot-2, then-3) if that one already holds another agent's or a person's login.Written for commit 36a232b. Summary will update on new commits.