0.467 (16 Jul 2026)

16 July, 2026

This release changes how signed links are minted from code. Flows and custom functions can now mint, list, and revoke shareable links as a trusted service, so backend code can hand out access regardless of who triggered the flow.

Minting signed links from code

Calling flows.<flow>.signedLinks.create(), .list(), or .revoke() without an explicit identity now runs as a trusted service and skips the flow's share permission. Backend code can mint and revoke links even when the person running the flow holds no share permission.

// Runs as a trusted service, no share permission required
await flows.reportFlow.signedLinks.create({ reusable: true });

To run the call as a specific user and enforce the share permission, set an identity or auth token:

// Runs as the given identity, share permission enforced
await flows.reportFlow.signedLinks.withIdentity(ctx.identity!).create({});

Links minted this way have no owner, so their createdBy is null. Minting from the Console is unchanged and still goes through the share permission.

Fixes and improvements

  • File attachments loaded from a stored file now keep their filename and content type when sent with notify.email(). Previously they arrived with a blank name in both the delivered email and the in-app notification; inline attachments were unaffected.

For any issues or feedback, please contact us at help@keel.so.

Thank you for using Keel!