The app calls these Scheduled tasks. The CLI command
screenpipe pipe, local API paths under /pipes, and configuration file pipe.md retain their technical names. Use those exact identifiers in commands and configuration.Overview
Scheduled tasks can access the Screenpipe API to read screen data, manage meetings, send notifications, and more. By default, scheduled tasks have full access to every endpoint — no restrictions. If you want to limit what a scheduled task can do, add apermissions block to the YAML frontmatter in pipe.md. This is useful for:
- Preventing accidents — a scheduled task that reads meetings shouldn’t be able to stop one
- Least privilege — scheduled tasks from the store should only access what they need
- Safety — deny destructive endpoints like
/data/delete-range
Quick start
Presets
reader — restricted API defaults
Everything else is denied.
writer — reader + write operations
reader endpoints, plus:
admin — full access (explicit)
permissions block, but creates a token for logging/auditing.
Custom rules
For fine-grained control, useallow and deny lists with Api(METHOD /path) patterns:
Pattern syntax
* in the method position matches GET, POST, PUT, DELETE, etc.
* in the path position matches any sequence of characters.
Evaluation order
Rules are evaluated in this order — first match wins:- Deny — if the request matches any deny rule, it’s blocked (403)
- Allow — if the request matches any allow rule, it passes
- Default allowlist — if
allowis empty and the scheduled task uses a preset with defaults (reader/writer), the default list is checked - Reject — if nothing matched, the request is blocked
Examples
Deny specific endpoints (keep full access otherwise):Data access rules
Data filtering uses the sameallow/deny lists with App(), Window(), and Content() rules:
Deny rules always win over allow rules. If no rules of a given type exist, everything is allowed.
How it works
When a scheduled task has any restrictions (permissions block, data filters, etc.):- Screenpipe generates a unique token (
sp_pipe_*) for the scheduled task session - The token is registered with the server middleware
- Every API request from the scheduled task includes the token in
Authorization: Bearer sp_pipe_* - The middleware checks
is_endpoint_allowed(method, path)before forwarding - The Pi extension also enforces rules client-side (blocks curl commands before they run)
- When the scheduled task finishes, the token is cleaned up