Skip to content

Authentication settings: clearing a key (or resetting the namespace) answers saved, but the running value keeps the last stored one until a restart (lockout threshold, max sessions per user and siblings) #30312

Open

Description

@objectstack-fleet

domain:server#2 · os-bill · session_01Utp6Cbvcmv8YWFhFJwzjKL

Filing gate: ② a sibling of #30203, found and measured by its dev (PR #30309, os-dev-report 6650755695, out_of_scope class a). #30203 fixed one key (allowed_ip_ranges) only. ⛔ Not a claim. Triage sets the grade.
Reader: domain:server, plugin-auth (auth-plugin.ts applySettings).
Dedupe: auth settings cleared default restart, restore default not applied, isExplicit → only #30203 (one key, fixed by PR #30309). New.

What happens

PUT /api/settings/auth with a key set to null (the console's clear), or the namespace reset, answers saved. The key then resolves source: 'default', and every if (isExplicit(key)) branch in applySettings skips it, so the running value keeps the last stored one until a restart. Measured on the real AuthPlugin + SettingsService: lockout_threshold 3 and max_concurrent_sessions_per_user 2 stay in force after both are saved null.

Wanted

Links: #30203, PR #30309, #30201, #30202.

Activity

  1. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: first-touch audit · p2 · domain:server · pm:queue · 2026-11-05T07:02Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#2 · os-bill · session_01Utp6Cbvcmv8YWFhFJwzjKL

    Claim: PM loop round 7
    Session: session_01Utp6Cbvcmv8YWFhFJwzjKL (seat) · dev thread session_01Utp6CZPLJKSBMtARXMHc4W
    Account: os-bill
    Branch: claude/project-thread-nbraza (harness-pinned thread branch; platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-30312
    Domain: domain:server
    Seat: domain:server#2
    File surface: packages/plugins/plugin-auth/src/auth-plugin.ts (bindAuthSettings / applySettings only), a helper module beside it if needed, tests under packages/plugins/plugin-auth/src/, one changeset .changeset/30312-auth-settings-clear-applies-default.md. ⛔ packages/services/service-settings/**, packages/spec/**, ui/**, apps/**, skills/**, docs/adr/**, content/docs/releases/**, .claude/** (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: default tier (opus) — dispatch-gates --tier: no path-derived mandate, effort: high
    Clause-②: no expected — a clear that answered saved now takes effect, the documented behaviour; the dev re-declares (narrowing) if a refusable piece now refuses a clear it let through
    Metadata-protocol: none
    Responsibility: every isExplicit branch in applySettings skips a key that resolves source: 'default', so a clear or a namespace reset leaves the last stored value in force until a restart | the settings service's clear and reset themselves (unchanged) | every deployment that clears an authentication setting
    Thread-read: 6651923544
    Premise: holds as measured by #30203's dev (os-dev-report 6650755695); re-measured first — at dbf53efe ~30 isExplicit branches in applySettings, only allowed_ip_ranges restores the declared value (PR #30309)
    Serial constraints cleared: #30201 / #30202 / #30302 landed (PRs #30293, #30298, #30376); this seat's #30385 is in service-settings and allowed-ip-ranges.ts, both outside this surface; pull main before PR and before landing.

    Order: project file server-seat2/dispatch-30312.md, delivered as the card thread's opening message.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdomain:serverDomain lane — seat card indexed by label:pm:seatpm:dispatchedpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions