Loading...
Loading...
Check when Salesforce orgs expire (or already expired) and what to do about it, for one org, the default org, or across all authenticated orgs, using the Salesforce CLI (sf). Use when the user asks about org or trial expiration, "when does my trial expire", "is my trial org still active", "how many days are left", "which orgs are expiring soon", wants to filter orgs expiring within N days, needs machine-readable (JSON/CSV) output for cron or alerting, wants to back up an at-risk org before it lapses, or asks how to extend or renew an expiring trial or Developer Edition org. Covers trial editions, Developer Edition orgs (anything with a TrialExpirationDate), and scratch orgs (via sf org list). DO NOT TRIGGER for sandbox refresh timing, for creating, deleting, or switching the active org, or for non-Salesforce trials such as AWS, Netflix, or other vendors — this skill reads expiration and prints guidance, it does not modify orgs.
npx skill4agent add forcedotcom/sf-skills dx-org-trial-expiration-check--json--fail-if-expiring--preserve--renewTrialExpirationDateexpirationDatesf org listdx-org-switchOrganization.TrialExpirationDatesf data querynullexpirationDatesf org list./scripts/<skill_dir>/bash "<skill_dir>/scripts/check_expiration.sh" <alias-or-username> # one org
bash "<skill_dir>/scripts/check_expiration.sh" # default org (target-org config)
bash "<skill_dir>/scripts/check_expiration.sh" --all # every authenticated org
bash "<skill_dir>/scripts/check_expiration.sh" --all --within 30 # only orgs expiring within 30 days<skill_dir>sf org login web--preserve--renew--json--csv--fail-if-expiring| Flag | Purpose |
|---|---|
| Check every authenticated org. |
| Show only orgs expiring within N days (includes already-expired; omits paid/production). |
| Emit a JSON array of org records (data only). |
| Emit CSV rows (data only). |
| Print backup commands for expiring/expired orgs. |
| Print trial/DE extension & reactivation guidance. |
| Exit 3 if any org expires within N days (default 7). |
| Exclude scratch orgs (trial/DE only). |
| Show usage. |
--all --within 30 --jsonWarningOrg expiration status for all authenticated orgs:
Expired:
old-trial trial/DE edition expired 2026-06-20 (EXPIRED 19 day(s) ago)
Expiring soon (within 7 day(s)):
almost-up trial/DE edition expires 2026-07-14 (expires in 5 day(s) Warning)
Active (not expiring soon):
acme-trial trial/DE edition expires 2026-08-15 (expires in 37 day(s))
my-scratch scratch org expires 2026-07-25 (expires in 16 day(s))
No trial expiration (paid/production):
prod no trial expiration (paid/production org)
Summary: 1 expired, 1 expiring within 7 day(s), 2 active, 1 with no expiration.--json--csv--json--csvorgkindexpirationDatedaysRemainingnullstatusorgId# JSON, filtered to orgs expiring within 30 days:
bash "<skill_dir>/scripts/check_expiration.sh" --all --within 30 --json--fail-if-expiring[=N]3ALERT:# crontab: every morning at 9, alert if anything expires within 7 days
0 9 * * * bash "<skill_dir>/scripts/check_expiration.sh" --all --fail-if-expiring 7 \
|| mail -s "Salesforce org expiring soon" me@example.com--preserve--preserveretrievebash "<skill_dir>/scripts/check_expiration.sh" my-trial --preserve--renew--renewpartners.salesforce.comPowerOfUsDesk@salesforce.commyaccount@salesforce.com012sfjq3--fail-if-expiring--fail-if-expiring31--jsonstatus: "auth_error"--fail-if-expiring--fail-if-expiring--fail-if-expiring 12345check_expiration.sh 12345 --fail-if-expiring 7 my-trial not authenticated — no saved credentials for this org
To authenticate, run one of:
sf org login web --alias "my-trial"
sf org login web --alias <my-alias> --instance-url https://test.salesforce.com
Then re-run this check. List existing logins with: sf org listsf org login web--instance-url https://test.salesforce.com# Trial/DE expiration for one org (null = not a trial / paid org):
sf data query --query "SELECT Id, TrialExpirationDate FROM Organization" --target-org <org> --json
# Scratch org expiration comes from the org list, not SOQL:
sf org list --jsonsfjqsf org login websfsf org listtrailExpirationDatenullTrialExpirationDateexpirationDate