Skip to main content

Saggar links

A Saggar link proposes one action to the Mac app. The app shows its source and the complete request, then waits for the user to confirm. Opening a link never changes settings, creates a session, runs a prompt, or writes a skill by itself.

The canonical shape is:

https://saggar.marginalutility.dev/open/v1/{action}?{parameters}

v1 supports five actions:

ActionParametersResult after confirmation
navigateOptional paneOpens Saggar, or a Settings pane.
settingsOne or more supported setting keysShows and applies an exact before-and-after diff.
sessionname, commandAdds an enabled session preset.
promptprompt, provider, model, optional titleOpens an agent session and runs the visible prompt.
skillid, providerInstalls a skill shipped inside this Saggar build for one provider.

Parameters​

pane names a Settings pane: general, appearance, interface, notifications, sound, keyboard, projects, presets, terminals, ssh, providers, turbo, automation, cli, account, or remoteControl. Without pane, navigate opens Saggar.

Supported setting keys are appFontScale, optionAsMetaKey, terminalFontSize, and terminalScrollback. Each value is checked against the setting's allowed range when the change is applied, and a value outside it fails with a message naming the setting. Links can't change remote access, accounts, credentials, grants, or secrets.

prompt opens an agent session only when model is in the Mac's own catalog for that provider. Otherwise the confirmed action fails with a message that the model isn't available in this build. provider is a provider name such as claude or codex.

Add a button to a docs page​

Import the shared component, then pass typed parameters:

import SaggarLink from '@site/src/components/SaggarLink';

<SaggarLink
action="session"
parameters={{name: 'Review', command: 'codex'}}
>
Add the Review session
</SaggarLink>

Open Provider settings

Use a button label that names the action. Don't use a generic “Confirm” or “Continue” label.

Trust and limits​

Universal links delivered from the public Saggar site appear as official. The browser fallback is saggar://open/v1/{action}?{parameters}. It always appears as unverified, and the confirmation shows its source parameter, if any, as the unverified origin, even when it claims to come from the public site. Both paths require the same native confirmation.

The parser rejects unknown actions, unsupported versions, duplicate parameters, oversized URLs, any query parameter the action doesn't take (other than source), and any settings key that isn't a supported setting.

FieldLimit
Whole URL8,192 bytes
prompt4,000 bytes
command1,000 bytes
name, model, title120 bytes each
id (skill)80 bytes
provider40 bytes

Links can't contain arbitrary skill files or direct shell-execution actions.