Settings: add airplane mode disable authentication - #445
Draft
Datawav wants to merge 1 commit into
Draft
Conversation
Datawav
force-pushed
the
datawav/airplane-mode-authentication
branch
from
September 1, 2026 10:29
c66f7ce to
c4767f8
Compare
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.
Refs GrapheneOS/os-issue-tracker#6059
This proof of concept adds an opt-in, off-by-default "Require authentication to turn off airplane mode" switch under Network & internet.
When enabled, both legacy and Catalyst Settings airplane-mode toggles use the active user's standard operating-system authentication prompt before disabling airplane mode. The prompt accepts a strong biometric or the existing device credential (PIN, pattern, or password); it does not create or store a separate password. Enabling airplane mode remains immediate.
Cancellation, authentication error, or lockout leaves airplane mode enabled. The implementation allows one Settings prompt at a time, cancels and releases it with the preference lifecycle, and rechecks the live setting before applying the authenticated change. The option is only shown when the current user has a secure lock configured. Disabling the protection itself also requires fresh system authentication on both legacy and Catalyst paths.
The Catalyst hierarchy has first-class metadata for the opt-in. Preferences API writes remain able to enable airplane mode, but external false or unknown-value writes cannot disable airplane mode or the protection while authentication is required. A background public-slice request cannot bypass the gate: if Settings cannot present the standard prompt, the operation fails closed and airplane mode stays enabled. The network screen still declares an incomplete Catalyst hierarchy, so the XML preference remains part of the rendered screen.
This is accidental-activation protection rather than a central radio policy.
Depends on GrapheneOS/platform_frameworks_base#437 for the protected global setting and coordinated SystemUI coverage.
Test: not run; building GrapheneOS was intentionally not attempted on the resource-constrained development host.
git diff --checkpassed, modified XML parsed successfully, the complete cross-repository diff received Sol static review, and an independent immutable-diff Claude Opus review passed before publication. Suggested upstream targets areSettingsRoboTestsandSettingsUnitTestsfor the added and updated airplane-mode test classes.