Repository navigation
Conversation
An agent principal has no identity, so bc3's /authorization.json refuses its self-token. `basecamp me` and `auth status --check` both asked that document first, so every agent profile read as unauthenticated or rejected, even with a token the rest of the API accepted, and anything resolving an agent through `me` could not start. For a stored agent credential, `me` now names the person the bound account's /my/profile.json answers with. It reports no identity, says `principal: agent`, and carries the person's personable_type. `auth status --check` checks the token against the same document. BASECAMP_TOKEN still wins over any stored credential. An agent profile with no account is a usage error, not a rejection. For user credentials the JSON is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot review overview
🟢 Approved
The agent-specific routing, environment-token precedence, account validation, and output contracts are consistently implemented and tested.
Review effort: Balanced
Findings: None
What changed in this PR
Adds agent-credential support to identity and authentication checks.
Changes:
- Routes agent
meandauth status --checkthrough the account profile endpoint. - Extends
meoutput with agent principal and personable-type data. - Adds branch, precedence, validation, and documentation coverage.
[!TIP]
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or rungh pr ready --undo.
Click "Ready for review" or rungh pr readyto reengage.
| File | Description |
|---|---|
skills/basecamp-connect/SKILL.md |
Documents agent identity output. |
internal/commands/people.go |
Implements agent-aware me. |
internal/commands/people_test.go |
Tests agent me behavior. |
internal/commands/auth.go |
Checks agent tokens via account profiles. |
internal/commands/auth_status_test.go |
Tests agent status checks. |
internal/commands/auth_login_test.go |
Extends profile response fixtures. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Hey Zacharias, thanks for this, and for spotting that Jeremy ended up fixing the same thing in parallel, in #784 ( I'm closing this as part of tidying up the connector PRs. If there's anything here that #784 and #785 don't cover and you'd like to keep, such as the clearer "this profile has no account" usage error, just reopen it or ping me. I'm happy to help carry it over. |
An agent profile holds a
client_credentialscredential (basecamp auth agent connect, orauth login --with-client-credentials). Until now,basecamp meandbasecamp auth status --checktreated every such profile as unauthenticated or rejected. Both asked bc3's/authorization.jsonfirst, and bc3 refuses agent self-tokens there, because an agent has no identity whose accounts it could list. The token itself was fine: the rest of the API accepted it.This came up while building the bc3 side of converting an existing user into an Agent that keeps its person (bc3 PR linked below). After that conversion, the operator re-credentials the same CLI profile as the agent.
meis how the profile, the connect skill and the local connector confirm who it is. The connect skill already says "Confirm its identity withbasecamp me" for an Agent credential, and that command could not answer.What changes
basecamp me, stored agent credential./{account}/my/profile.json.principal: "agent", noidentity, no accounts, andpersonwithpersonable_type.basecamp auth status --check, stored agent credential. Checks the token against the same profile document. A missing account is a usage error, not a "rejected" verdict.BASECAMP_TOKENstill wins over any stored credential. Both commands take the old path for it.MeOutput.Identitybecomes a pointer withomitempty, and every user path sets it.skills/basecamp-connect/SKILL.mdsays whatmeshows for an Agent credential.Not changed
basecamp doctor: its API connectivity check and account check (projects list, which agents are refused) still fail for an agent profile.Checks
bin/ciis green locally.BASECAMP_TOKENguard, the account requirement andpersonable_type.da76ab1, found nothing further.Companion bc3 PR: basecamp/bc3#13570
Basecamp card: Agentize Marie
CLI connector card: basecamp me and auth status --check answer for an agent's own credential
🤖 Generated with Claude Code