Temporary code lifecycle

Temporary code,
actually temporary.

Add an @expiry comment above code you plan to delete — tied to a ticket, date, flag, or env var. Expiry scans your repo in CI and, with Pro, opens a PR when it's time to remove it.

Watch video
checkout.ts
// @expiry issue:ENG-442:closed | Remove legacy auth shim
export function legacyAuthShim() {
  return verifyLegacyToken();
}
ready Ticket closed → safe to delete
$ expiry scan --offline health 82 · 2 overdue
  • overduebanner.py:2date passed
  • readycheckout.ts:1env var gone
  • waitingauth.ts:1issue DEMO-42
PythonGoRustJavaCC++C#RubyJavaScriptTypeScript

Why teams use Expiry

Temporary code is expensive when nobody owns deletion.

Stop review churn

Overdue shims fail CI before merge — not six months later in production.

Prove compliance

Health scores and SARIF export give security teams an audit trail.

Automate cleanup

Pro opens draft PRs when conditions fire — engineers review, not hunt.

Works in your stack

Same @expiry comment in Python, Go, Rust, Java, C#, Ruby, SQL, Vue, and TypeScript — one scan across the whole repo.

Pricing

Free to enforce. Paid to clean up.

Find temporary code for free. Pay when you want draft PRs and alerts.

Free

$0

  • CLI + GitHub Action
  • All condition types
  • CI gating & health score

Team

$199/mo

  • Unlimited repos
  • SSO & audit logs
  • Priority support

Compare plans & billing options →

TODO comments don't delete themselves

Expiry replaces vague promises with verifiable conditions your pipeline checks every run.

TODO: remove later

  • Who deletes it? Nobody remembers
  • Checked when? Never
  • How removed? Manual hunt

@expiry issue:ENG-442:closed

  • Who deletes it? Expiry, when ticket closes
  • Checked when? Every pull request
  • How removed? Pro opens a PR

See use cases →

Used by teams who ship fast

From incident hotfixes to multi-year migrations.

Platform engineeringSaaS product teamsFintech & regulated Open-source maintainersAgencies & consultanciesData & ML pipelines
Nothing is as permanent as a temporary fix.
View pricing