Repository navigation
feat(agents): change one profile credential and see what is on file - #80
Merged
Merged
Conversation
enroll replaced the whole profile, so changing one credential meant re-entering every token, and nothing showed what was stored. - enroll accepts a partial profile. The manager reads the stored profile, keeps every field the request leaves out, removes a model credential sent as null, validates the merged profile, and checks the GitHub login only for a new token. The reply carries a summary of the result. - The new owner-signed profile operation returns that summary: the GitHub login, the Git identity, and which credentials are present, never a credential value.
The enroll form rebuilt the whole profile from blank fields, and showed nothing about what was stored. - When Settings opens, the form asks the Sandbox manager what is on file, and shows it: the GitHub login, Git email, signing key, via profile, 1Password token and model credentials, by name only. On-file fields say "On file · leave blank to keep". - With a profile on file, enrolling sends only the filled fields. A blank GitHub token keeps the stored one without a GitHub call, and the signing key stays unless "Replace the signing key" is selected. "Remove" drops a stored model credential. - With nothing on file, or when the manager cannot say, the complete profile is still required.
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
📒 Files selected for processing: 16
✨ Finishing Touches
Comment |
thebrandonlucas
approved these changes
Oct 23, 2026
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What
Change one agent profile credential without entering all of them again, and see what is already on file.
Before this PR,
enrollreplaced the whole profile. The form rebuilt it from blank fields and never saved tokens, and the manager could only write profiles. So adding one token, such as a Codex access token, meant entering the GitHub token, via profile, 1Password token and every model credential again. Leaving one blank dropped it. Nothing showed what was stored, and every enroll also created and registered a new signing key.Change
Protocol (
buzz-session-control)A new
profileoperation. Likeenroll, it is signed by the owner key itself, with noauthtag. Its payload is{}.Manager (
buzz-sandbox-reaper)enroll: the request may leave out any section (git,github,via,models) or any key inside one. Admission checks only the shape (profile::check_partial). The job then works in this order:GetSecretValue).profile::merge).profile.pyport.models,nullremoves a credential. Setting one of an exclusive pair (OpenAI key and Codex token, or Anthropic key and Claude token) removes the other. With nothing stored, the request must be complete.profile, and every successfulenroll, returns a summary: the GitHub login, the Git name and email, and which credentials are present. It never contains a credential value.GPUI (
apps/buzz-gpui)Docs
docs/remote-agents.md: theprofileoperation, partial enrollment and the summary.voltage/remote-agents.md: a new section, Change one credential.Deploy
secretsmanager:GetSecretValueon the developer profile secrets only. Without it, every enroll would fail when it reads the stored profile.Tested
buzz-sandbox-reaper: 97 tests pass. New tests cover:nullremoval, and an exclusive pair replacing its other;describenaming no credential;profileadmission (owner-signed only, empty payload).buzz-session-control: the envelope round trip coversprofile.--features buzz-gpui/voltage-sandbox(1,065 app tests). New tests cover:nullfor a removal and nogithubor signing key when they are kept;profile.pyrefusals;profilereply and the On file text;-D warnings) and fmt are clean in both workspaces.Summary by CodeRabbit