On-call is in beta. Squasher does not send on-call texts or phone calls yet, so escalation
policies record those steps as
blocked. To reach the person who
is on call today, send incidents to PagerDuty or another notification
destination. Plans limit the number of schedules; see Plans and
billing.Create a schedule
- Select On-call under Alerting in the sidebar, then select Create schedule.
- Enter a Name.
- Under Rotation members, select the people in the order they take turns.
- Enter the Timezone, for example
America/New_York. The default isUTC. - Select Create.
Create a schedule with the CLI
Add rotation layers
Rotation layers add daily, weekly, or custom-length shifts to a schedule. Open the schedule and use Rotation layers, or send the layers to the API. A schedule can have up to 10 layers. Each layer has its own members and rotation:
Each layer also has:
- Start date (
anchor_date,YYYY-MM-DD) and handoff time (handoff_local_time,HH:MM). Both use the schedule timezone. The first member’s shift starts at this date and time. Before the start date, the layer covers nobody. - Members — 1 to 50 people, in rotation order. Every member must belong to the organization.
Which layer wins
Squasher decides who is on call at each moment in this order:- An override for that time.
- The latest layer in the list that covers that time. A later layer overrides earlier layers. For example, put a weekday business-hours layer after a 24/7 weekly layer.
- The schedule’s weekly rotation, when the schedule has no layer that covers that time.
See who is on call
current and now are the same command. When nobody is on call, it prints “No on-call coverage
right now.” To see the shifts of one schedule:
--ics to get the shifts as an iCalendar file. Each event names the person by user ID.
When several schedules cover the same moment, Squasher picks one person:
- A schedule for the project wins over a schedule for the whole organization.
- In a schedule, an override wins over the normal rotation.
- If there is still a tie, the oldest schedule wins.
Swap a shift
An override gives a time window to another person:swap and swap-shift are the same command. To stop a schedule without deleting its history,
run squasher on-call enable --project "$SQUASHER_PROJECT_ID" --schedule <schedule-id> --disable.
To remove a schedule with its members, layers, and shifts, run
squasher on-call delete --project "$SQUASHER_PROJECT_ID" --schedule <schedule-id>. Squasher
refuses while an escalation policy targets the schedule; add --force to delete it anyway.
Page the on-call person
Attach an On-call escalation destination to a notification route. When a matching incident opens, Squasher texts the person who is on call. If nobody acknowledges within 60 seconds, it calls them, calls again after another 60 seconds, and then escalates to the next level. Reply1 to the
text or press 1 on the call to acknowledge the page and the incident. See
On-call escalation for policies, phone numbers, and plan
availability.
Hand failed triage to a person
When an AI triage run fails, Squasher looks up the person who is on call now for the project. If the incident or issue is still assigned to @Squasher, Squasher assigns it to that person. On an incident, the timeline says “Squasher gave up — handed off to the on-call engineer.” Nothing changes when nobody is on call or when a person already owns the item. Squasher does not notify the person; they see the assignment in the dashboard.Limits
- Create schedule makes a weekly rotation. For daily or custom-length shifts, add rotation layers.
- Squasher creates the shifts when you create the schedule: 12 weeks by default, up to 52 with
--weeks. It does not add shifts later. When the last shift ends, nobody is on call. Create a new schedule before then. - The dashboard does not show the handoff time of a schedule yet.
- The iCalendar feed at
/v1/projects/<project-id>/on-call/schedules/<schedule-id>/shifts.icsneeds the API key in a header. Calendar apps that cannot send headers cannot subscribe to it. - Squasher has no importer for schedules from other tools.
Use on-call from an agent
The Squasher MCP server can list schedules, members, and shifts, read who is on call now, and create overrides. It cannot create, enable, disable, or delete schedules. API keys need theon_call:read scope to read and on_call:write to make changes.
Next steps
Page by text and call
Escalation policies, phone numbers, and acknowledgment.
Set up notifications
Send incidents to the channels your team watches.
Read AI triage
See what triage does before it hands off.
On-call API
Schedules, layers, escalation policies, and pages over HTTP.
CLI reference
Every on-call command and flag.