Skip to content

Consent: leave macOS permission cards of an ended session to Cingulate - #1407

Open
aft-alfonso[bot] wants to merge 2 commits into
mainfrom
land/consent-ended-scope-cards
Open

aft-alfonso[bot] wants to merge 2 commits into
mainfrom
land/consent-ended-scope-cards

Conversation

@aft-alfonso

@aft-alfonso aft-alfonso Bot commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

At startup AFT withdraws the macOS permission cards it recorded, each under the scope it was filed in. When the filing session has ended, the daemon refuses the route (scope_not_live), so on the 0.64 RC card all 38 withdrawals failed and their rows stayed for the next start, where they would fail again.

That refusal now maps to a new ConsentError::ScopeGone. Startup drops the record and leaves the ask to Cingulate, which settles asks of ended scopes itself (SUBC's change on the Cingulate side). A held tool call that meets the refusal gets the same unavailable answer as before, so no agent-visible text changes.

Tests: subc::consent:: (192, macOS) including a new macos_permission_startup_drops_cards_whose_scope_ended; Windows compile with warnings as errors.


Summary by cubic

Fixes repeated startup failures for macOS permission cards whose filing scope has ended, leaving their settlement to Cingulate.

When the daemon refuses the withdrawal route with scope_not_live or scope_ended, AFT now maps the error to a new ConsentError::ScopeGone and drops the card record instead of keeping it for another retry at the next start. Held tool calls that meet this refusal still get the same unavailable answer as before, so no agent-visible text changes.

Written for commit d97abc1. Summary will update on new commits.

View guided diff Turn on auto-fix

ualtinok and others added 2 commits November 8, 2026 08:55
AFT withdraws its macOS permission cards at startup under the scope each was
filed in. When that session has ended the daemon refuses the route
(scope_not_live / scope_ended), so every withdrawal failed and the row was
kept for the next start, where it failed again. That refusal is now its own
ConsentError::ScopeGone; startup drops the record and leaves the ask to
Cingulate, which settles asks of ended scopes itself. A held call that meets
it still gets the unavailable answer it got before.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
@aft-alfonso
aft-alfonso Bot added this pull request to the merge queue Nov 8, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Nov 8, 2026
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