Schedule Syntax
This reference documents the complete schedule syntax supported by GitHub Agentic Workflows, including fuzzy schedules (recommended), time constraints, and standard cron expressions.
Overview
Section titled “Overview”GitHub Agentic Workflows supports human-friendly schedule expressions that are automatically converted to cron format. The system includes two types of schedules:
- Fuzzy schedules (recommended) - Automatically scatter execution times across workflows to prevent load spikes
- Fixed schedules - Run at specific times, but create server load when many workflows use the same time
Fuzzy schedules distribute workflow execution times deterministically across all workflows in your repository. Each workflow gets a unique, consistent execution time that never changes across recompiles, preventing server load spikes.
GitHub Actions enforces a minimum schedule interval of 5 minutes.
Quick Reference
Section titled “Quick Reference”| Daily | daily | Scattered time | Fuzzy |
| daily on weekdays | Mon-Fri, scattered time | Fuzzy | |
| daily around 14:00 | 13:00-15:00 window | Fuzzy | |
| daily around 9am on weekdays | Mon-Fri 8am-10am | Fuzzy | |
| daily between 9:00 and 17:00 | 9am-5pm window | Fuzzy | |
| daily between 9:00 and 17:00 on weekdays | Mon-Fri 9am-5pm | Fuzzy | |
| Hourly | hourly | Scattered minute | Fuzzy |
| hourly on weekdays | Mon-Fri, scattered minute | Fuzzy | |
| every 2h | Every 2 hours | Fuzzy | |
| every 2h on weekdays | Mon-Fri every 2 hours | Fuzzy | |
| Weekly | weekly | Scattered day/time | Fuzzy |
| weekly on monday | Monday, scattered time | Fuzzy | |
| weekly on friday around 5pm | Friday 4pm-6pm | Fuzzy | |
| Bi-weekly | bi-weekly | Scattered across 2 weeks | Fuzzy |
| Tri-weekly | tri-weekly | Scattered across 3 weeks | Fuzzy |
| Intervals | every 10 minutes | Every 10 minutes | Fixed |
| every 2 days | Every 2 days | Fixed | |
| Cron | 0 9 * * 1 | Standard cron | Fixed |
Fuzzy Schedules
Section titled “Fuzzy Schedules”Fuzzy schedules automatically distribute workflow execution times to prevent server load spikes. The scattering is deterministic based on the workflow file path, so each workflow consistently gets the same execution time.
Daily Schedules
Section titled “Daily Schedules”Run once per day at a scattered time:
Each workflow gets a unique time like 43 5 * * * (5:43 AM) or 43 5 * * 1-5 (5:43 AM, Mon-Fri).
Daily with Time Constraints
Section titled “Daily with Time Constraints”Use around for a ±1 hour window or between for custom ranges. Add on weekdays to restrict to Monday-Friday:
Special time keywords: midnight (00:00), noon (12:00)
Hourly Schedules
Section titled “Hourly Schedules”Each workflow gets a consistent minute offset (0-59) to prevent simultaneous execution.
Interval Schedules
Section titled “Interval Schedules”Add on weekdays to restrict interval schedules to Monday-Friday:
Supported intervals: 1h, 2h, 3h, 4h, 6h, 8h, 12h
Weekly Schedules
Section titled “Weekly Schedules”Supported weekdays: sunday, monday, tuesday, wednesday, thursday, friday, saturday
Weekly with Time Constraints
Section titled “Weekly with Time Constraints”Bi-weekly and Tri-weekly Schedules
Section titled “Bi-weekly and Tri-weekly Schedules”Each workflow gets a deterministic time that repeats every 14 or 21 days, scattered across the full period to distribute load.
IANA Timezone Field
Section titled “IANA Timezone Field”For cron-based schedule items, use the optional timezone field to interpret the cron expression in a specific timezone rather than UTC:
The timezone field accepts any IANA timezone identifier (e.g., America/New_York, Europe/London, Asia/Tokyo, UTC). The compiler converts the cron expression to UTC using the specified timezone rules, including automatic daylight saving time handling.
The timezone field applies only to cron-based schedule items (- cron: "...") in the list form. For fuzzy schedules written as strings (e.g., daily around 9am), use the inline utc+N / utc-N offset syntax instead.
UTC Offset Support
Section titled “UTC Offset Support”Use utc+N or utc-N (or utc+HH:MM) to convert local times to UTC:
Common offsets: PT/PST/PDT (utc-8/utc-7), EST/EDT (utc-5/utc-4), JST (utc+9), IST (utc+05:30)
Fixed Schedules
Section titled “Fixed Schedules”For fixed-time schedules, use standard cron syntax:
Interval Schedules
Section titled “Interval Schedules”Use every N [unit] syntax for various intervals:
Valid minute intervals: 5m, 10m, 15m, 20m, 30m Valid hour intervals: 1h, 2h, 3h, 4h, 6h, 8h, 12h
Time Formats
Section titled “Time Formats”Supports 24-hour (HH:MM), 12-hour (Ham, Hpm), and keywords (midnight, noon):
Standard Cron Expressions
Section titled “Standard Cron Expressions”Format: minute hour day-of-month month day-of-week
See GitHub’s cron syntax documentation.
Multiple Schedules
Section titled “Multiple Schedules”Shorthand Format
Section titled “Shorthand Format”Use on: daily as shorthand, which automatically expands to include both schedule and workflow_dispatch:
Validation & Warnings
Section titled “Validation & Warnings”The compiler warns about patterns that create load spikes:
Related Documentation
Section titled “Related Documentation”- Triggers - Complete trigger configuration
- Frontmatter - Workflow configuration reference
- GitHub Actions Schedule Events - GitHub’s schedule documentation