Repository navigation
Train train/2026-11-10.1 - #153
Merged
Merged
Conversation
…oken Every agent's pool is token=env;fallback=<folder>, both on the second account, so a limit on it had nowhere to hop. A pool entry can now be label=dpapi:<path>: a long-lived token in a file encrypted for this Windows user, read at each launch and each sign-in check and handed to the child only in its environment. A file that gives no token fails its own entry and the pool moves on. A pool with no login left refuses to start the agent rather than running it on whatever its own environment holds. A folder entry used to send CLAUDE_CODE_OAUTH_TOKEN="", which the CLI reads as signed out. It now sends no token, and the variable is removed where the launch env is applied: the agent spawn and the sign-in check. Claude-Account: russelledeming@gmail.com Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pool string names the primary's token file, and the agent's tool shell inherited it. It is now removed from the child, beside the Nostr key. Two gates had no test. Making the token removal unconditional, or moving it after the login's own env, stripped every token=env and dpapi login and passed the whole suite. So did loosening the refusal to start with no login left. A real child now shows each kind of login's token, and a pool with no login left starts nothing. Claude-Account: russelledeming@gmail.com Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A real 401 on a dpapi login marked it signed out, and the next sign-in check cleared the mark: claude auth status answers loggedIn:true for any token without asking the server. The work went back onto the revoked token every 15 minutes, with a lost-sign-in text and an all-clear each time, and every agent shares that one file. A real 401 now remembers the file's modified time. A check's yes clears the mark only once the file has changed; a real answer still clears it. A mark set because the file could not be read still clears on a good read. token=env keeps today's behaviour. Claude-Account: russelledeming@gmail.com Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A launch that could not read a token file marked the login signed out whatever the reason, and the owner was told "Claude said: not signed in" when Claude was never asked. A PowerShell timeout moved work off a good account as a lost sign-in. The card's remedy was also wrong for a dead file: signing in does not replace it. A silent or unstartable PowerShell now sets the login aside as a timed limit, tried again in 30 minutes, and tells the owner once. A dead file still takes the lost-sign-in path, in its own words: which login's file, what is wrong and that set-account.ps1 is the fix, on the text, the STATE record (class=token_file) and the card. A login already inside a limit keeps it. The sign-in check's handling of a dead file moves to one small function with a test: a file that gave no token is never judged by the CLI. Claude-Account: russelledeming@gmail.com Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A dead token file at boot, a slot refill or an idle move queued the owner's text, and only a finished turn or a sign-in check that changed something sent it. An idle agent ran on another account and the phone stayed silent. The maintenance beat now sends a text that is waiting. It does nothing when none is, so a STATE record that merely fell due keeps its carrier and #factory keeps its cadence. Claude-Account: russelledeming@gmail.com Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A launch could read the same dead file once per pool entry plus one, under the factory lock on the main loop, so a hung PowerShell held the loop for 30 s or more and the comment's 15 s was low. The loop now stops when the pool offers a login it already failed, and the comments give the real bound: 15 s per dpapi entry. Claude-Account: russelledeming@gmail.com Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A typo in a dpapi entry (DPAPI: in capitals, a label with a dot or a space, a label over 32 characters) launched the agent with CLAUDE_CONFIG_DIR set to the whole string and any token removed. Nothing named the bad entry. It now fails that entry with a plain reason and the pool moves on. Claude-Account: russelledeming@gmail.com Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Steward train. The steward reads this body back; do not edit it.
Repo: QuicksilverSlick/buzz
Branch: train/2026-11-10.1
Base: f28faa2
Round: 0
Release: desktop-release: a green main CI publishes the desktop update 1-2 h after the merge.
Notes:
Built-by: steward