What gets cached
- CSS selectors and HTML attributes
- Accessibility roles and metadata
- Screenshots and visual cues
- Element location and dimensions
Cache saving eligibility
A run only saves cache when it passes and the run is eligible.- CI runs (
CI=true) are always eligible. - Local runs are eligible when the current branch is not the main branch or a protected branch.
- Pass
--save-cacheto force eligibility.
Never cached
- AI-evaluated steps like AI check and AI extract
- Steps whose variables change every run (e.g.
{{ Date.now() }}) - Steps with caching explicitly disabled
Disabling cache
Globally:last item in list.
Cache keys
A cache key is derived from:- The step’s ID
- Parent module IDs
- Resolved element description
- Dynamic template values (e.g.
{{ env.USERNAME }})
Storage
- Stored per organization; only accessible to authenticated runs
- Expires after 90 days of inactivity
Git-based isolation
Caches are scoped per branch so concurrent work doesn’t collide:mainstores per-commit caches so new branches can seed from the nearest ancestor- Non-main branches store the latest cache only
- New branches seed from the latest cache at the merge base
- On merge, the merged branch’s cache is combined with
main’s previous commit so subsequent runs onmainstay green