become-ageless.sh is a shell script that converts a Linux system into a
declared noncompliant state under California's age reporting mandate. It modifies OS
identity files and installs compliance documentation — nothing more.
sudo)curl or wget to download the scriptGrab the script from agelesslinux.org or the GitHub repo:
curl -O https://agelesslinux.org/become-ageless.sh
Or clone the repository:
git clone https://github.com/agelesslinux/agelesslinux.git cd agelesslinux
The script operates in two modes. Both modify the same files; they differ in legal posture.
sudo bash become-ageless.sh
Rewrites /etc/os-release to declare the system ageless. Installs a stub
API endpoint that returns an error when queried for age data — the system acknowledges
the request but refuses to answer. Installs a machine-readable compliance notice
explaining the refusal.
This mode preserves what the statute calls a "good faith effort" fig leaf under § 1798.502(b). The system has an age reporting API; it just doesn't report an age.
sudo bash become-ageless.sh --flagrant
No API at all. No pretense of compliance. Installs a machine-readable
REFUSAL notice stating that age reporting has been deliberately removed.
This mode is intended for devices you plan to hand to children — the entire point is
to be unambiguous.
sudo bash become-ageless.sh --persistent sudo bash become-ageless.sh --flagrant --persistent
Can be combined with either mode. In addition to the one-time conversion, installs
agelessd — a systemd timer that re-neutralizes systemd userdb
birthDate fields every 24 hours. This guards against package updates,
user creation, or desktop tools that may attempt to populate age data in the future.
The script touches only files under /etc/:
Backed up to /etc/os-release.pre-ageless before modification. The script
rewrites identity fields (PRETTY_NAME, NAME, etc.) to include
"Ageless" in the distribution name, signaling noncompliance to any software that reads
OS identity.
If present (Ubuntu and derivatives), also rewritten for consistency. Backed up to
/etc/lsb-release.pre-ageless.
A new directory containing compliance documentation: the notice file (standard or refusal, depending on mode), and metadata about when and how the conversion was performed.
Drop-in records for systemd userdb that neutralize the birthDate field
(added in systemd PR #40954,
merged March 18, 2026). Regular mode sets all users to 1970-01-01; flagrant
mode sets it to null. Each record includes full passwd fields (uid, gid,
home, shell) to avoid shadowing NSS resolution.
If --persistent is passed, installs agelessd and a systemd
timer (agelessd.timer, agelessd.service) that re-neutralizes
userdb birthDate fields every 24 hours and on boot. This is the only flag that installs
a systemd service.
The script preserves your original files. To revert, restore the backups:
sudo cp /etc/os-release.pre-ageless /etc/os-release
If your system had /etc/lsb-release:
sudo cp /etc/lsb-release.pre-ageless /etc/lsb-release
Optionally remove the compliance directory:
sudo rm -rf /etc/ageless/
The script technically works on any system with /etc/os-release — which is
virtually every modern Linux distribution. However, it was designed and tested for
Debian-based systems.
Running it on a non-Debian system means you're liable under both the age verification statute and the script's own sense of humor. (It will warn you about this double liability at runtime.)
That said: if your distro ships age reporting and you need a removal tool, the project will build one for your distro. Open an issue on GitHub.
/etc/ (except systemd unit
files in /etc/systemd/system/ when --persistent is used)--persistent flag
adds a systemd timer — this is the only service the script creates)The script is intentionally minimal. You can read the entire thing in five minutes.