GitHub Airplane Mode
Purpose
Switch an already-installed local Git and GitHub download guard.
Keep the guard installed and active sessions intact. This skill does not bundle
or install low-data, Git/GitHub wrappers, or a native connection-cost detector.
When to use
- Enable protection before a flight or on a metered connection.
- Disable protection after returning online.
- Inspect the current policy or use automatic connection-cost detection.
Workflow
Verify the prerequisite
Operate only on the current machine. Require an already-installed compatible
low-data command before running any recipe.
- Resolve
command -v low-dataand inspect its file or symlink target. Verify its trusted local source and the mode, status, and exit semantics below. Stop if it is missing, shadowed, unfamiliar, or incompatible; report the prerequisite instead of downloading or replacing it. - Inspect the current state with
env -u LOW_DATA_ALLOW_NETWORK low-data status. - Apply only the requested mode. Interpret "I'm back", "return online", or
"remove airplane mode" as
off, not removal of the reusable guard.
Switch modes
# Inspect without a per-command override masking the saved policy.
env -u LOW_DATA_ALLOW_NETWORK low-data status
# Force protection for a flight or metered connection.
env -u LOW_DATA_ALLOW_NETWORK low-data on
# Explicitly disable protection after returning online.
env -u LOW_DATA_ALLOW_NETWORK low-data off
# Follow the native connection-cost detector.
env -u LOW_DATA_ALLOW_NETWORK low-data autoRequire these semantics: on forces protection; off explicitly disables it;
auto protects constrained or expensive connections and fails closed when
native status is unavailable. An unmetered connection is unprotected in auto.
Verify the result
After any change, run both checks with the override unset:
env -u LOW_DATA_ALLOW_NETWORK low-data status
if env -u LOW_DATA_ALLOW_NETWORK low-data active; then
printf 'active_exit=0 (protected)\n'
else
active_exit=$?
printf 'active_exit=%s\n' "$active_exit"
fiRequire active exit 0 for on and exit 1 for off. For auto, report the
detected reason and the matching active state. Treat any other exit as a failed
check. Do not claim success from the mode-setting command alone.
Keep changes bounded
- Preserve the switch, guards, native detector, and unrelated settings. Use the command to change mode; do not delete the implementation or edit shell startup files to turn it off.
- Limit protection claims to guarded Git history and bulk GitHub repository, release, and artifact downloads. Normal commits, pushes, metadata/API requests, curl, package installs, and model traffic remain allowed.
- Do not claim whole-machine airplane mode, a firewall, or a bandwidth cap. PATH wrappers are not a network boundary. Never bypass them through absolute Git or GitHub CLI binaries, aliases, or custom hooks.
- Allow
LOW_DATA_ALLOW_NETWORK=1 command ...only for one explicitly approved command. Never export that override globally. - Do not pause, resume, kill, or relaunch agent, tmux, terminal, or background sessions. A mode change is not process-control authority.
- Do not change other hosts, credentials, GitHub authentication, proxy settings, or remote repositories.
Inputs
- Requested local operation:
status,on,off, orauto. - Already-installed compatible
low-datacommand and its trusted source.
Outputs
- Saved mode, effective protected/unprotected state, and detected reason.
- Post-change
statusandactiveexit-code proof. - Exact missing prerequisite or failed verification when the operation cannot complete.
Flow
stateDiagram-v2
[*] --> VerifyInstalledCommand
VerifyInstalledCommand --> ReportBlocked: missing or incompatible
VerifyInstalledCommand --> ReadCurrentState: compatible
ReadCurrentState --> ReportState: status only
ReadCurrentState --> SetRequestedMode: on, off, or auto requested
SetRequestedMode --> CheckStatusAndActive
CheckStatusAndActive --> ReportState: mode and active result agree
CheckStatusAndActive --> ReportBlocked: unexpected exit or mismatch
ReportState --> [*]
ReportBlocked --> [*]