Skip to content

Correct Signal probe mechanism notes: listAccounts includes a server-side account check - #171

Open
MaxGhenis wants to merge 1 commit into
mainfrom
claude/signal-park-mechanism-notes
Open

Correct Signal probe mechanism notes: listAccounts includes a server-side account check#171
MaxGhenis wants to merge 1 commit into
mainfrom
claude/signal-park-mechanism-notes

Conversation

@MaxGhenis

Copy link
Copy Markdown
Owner

Comments/docs only — no behavior change. Follow-up to #170.

Live debugging on Max's install today (signal-cli 0.14.5, --verbose --verbose) falsified a mechanism claim in #170's comments and runbook: listAccounts is not a pure local read. signal-cli's per-account load runs AccountHelper.checkAccountState — a server round-trip while the stored account is marked registered — and any failure there (transient network trouble or a genuine rejection) prints one Ignoring/Failed to load <number> warning and reports zero accounts with exit 0. That's the observed ambiguity behind the false parks:

  • transient check failure"registered" stays true, next probe can succeed — the 2026-07-24 / 2026-08-06 false-park shape that Stop transient boot-time probe failures from permanently parking Signal needs_reauth #170's retry + streak + paced retest heals;
  • genuine deregistrationDeviceDeregisteredException[403] Authorization failed! persists "registered": false, after which every load fails locally before any network call (observed live; re-flipping the flag reproduced the 403 and re-persisted false).

Runbook additions: a persisted-verdict check (jq .registered data/<account>) and the verbose listAccounts recipe as steps 3–4 of the parked-Signal debug flow; a note that the 15-min park retest is local-only (zero server traffic) once a genuine deregistration is persisted, and that the growing streak number in last_error measures park age, not thrashing; the pre-re-link media backup recipe.

go build, gofmt, and the Signal supervisor/probe tests pass unchanged.

🤖 Generated with Claude Code

…ver-side account check

Live debugging on 2026-08-23 (signal-cli 0.14.5, --verbose) falsified the
claim in #170's comments and runbook that listAccounts "never consults the
Signal server". It does: loading each account runs signal-cli's
AccountHelper.checkAccountState, a server round-trip while the stored
account is marked registered. Any failure there — transient network
trouble or a genuine rejection — prints one "Ignoring/Failed to load"
warning and reports zero accounts with exit 0, which is why the empty
probe is ambiguous:

- transient check failure: "registered" stays true; the next probe can
  succeed (the 2026-07-24 / 2026-08-06 false-park shape that #170's
  retry + streak + paced retest now heals);
- genuine deregistration: DeviceDeregisteredException -> [403] persists
  "registered": false, after which every load fails locally before any
  network call (observed live; re-flipping the flag reproduced the 403).

No behavior change — comments and runbook only. The runbook's debug flow
now includes the persisted-verdict check (jq .registered) and the
verbose listAccounts recipe for reading the server verdict directly, and
documents that the 15-min park retest is local-only once a real
deregistration has been persisted.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant