A checkpoint is a structured progress report for an enforced or logged Passport. For enforced-mode agents, the initial signed Passport TTL uses the checkpoint interval. A successful checkpoint records progress and advances the stored monitoring deadline. It does not change the signed JWT expiry. Logged-mode checkpoints record progress without a monitoring-deadline update. Standard mode does not accept checkpoints.
The worker emits checkpoint_silence after more than two checkpoint intervals without a checkpoint. The signed JWT still expires at its originalexp.
{
"services_used": ["slack", "github"],
"actions_count": 3,
"delegated_to": ["agt_notion_writer"],
"summary": "Pulled ticket context; drafted reply"
}Set at issue time via checkpoint_interval_seconds. Choose from presets or a custom value (60s min, 3600s max).
In enforced mode, issue uses the checkpoint interval as the signed Passport TTL, capped at one hour. A checkpoint updates the database expiry and returns new_expires_at. It does not issue a successor JWT and cannot change the exp inside the existing token. Refresh the Passport to get a new signed token before the current token expires.
issue: signed exp = now + interval
checkpoint: stored new_expires_at = checkpoint time + interval
token: signed exp is unchanged
continue: refresh to receive a new signed PassportWhen a checkpoint reports a service outside the Passport intent, the checkpoint response includes a flag. The checkpoint does not create an immediate credential_outside_scope security event. Passport checkout later evaluates the final service report.
curl -X POST https://api.getstack.run/v1/passports/pas_8f3a/checkpoint \
-H "Authorization: Bearer $STACK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"services_used": ["slack", "github"],
"actions_count": 3,
"summary": "Pulled ticket context"
}'