A signature binds an Application to the Organization that published it. Trust that publisher once, and every Application they sign is covered — no per-document decision, no re-reading the code.Why Sign
An unsigned Application earns trust one place at a time. A folder-based Application asks for consent wherever it appears; an inline Application asks again in every document, because anyone who can edit the document can change its code.A signature moves the unit of trust from the copy to the publisher. It covers an exact set of built files — change one byte and it no longer matches. So trusting a signed Application means trusting a known Organization to stand behind exactly what you ran, and that decision follows their signature everywhere.What You See
A signed Application names its publisher. The shield on the Application container shows the signer and what you have allowed. From there you can:- Trust the publisher — one decision covers every Application that Organization signs.
- Forget or block — revoke a past acceptance, or block a signer so their Applications stop running for you.
An Organization Owner can go further. Permission Policies (Settings → Permission Policies) block a signer for everyone in the Organization at once, and a block always beats an individual's allow.Everything you have allowed lives under Settings → Permissions, next to consent for unsigned Applications.Signing Keys
Signing keys belong to an Organization. Only an Owner manages them, under Settings → Signing Keys.Generating a key runs entirely in your browser:- A key pair is created locally. CharmIQ stores only the public key — the half that verifies a signature, never the half that makes one.
- You download an encrypted backup of the private key, protected by a passphrase you choose. That backup is your only copy.
- The key is registered by proving you hold it — a signed challenge, not an upload of the secret.
Keys rotate by archiving the old one and registering a new one. Applications already signed with an archived key still verify; the archived key just cannot sign anything new.Signing an Application
Sign the manifest.json of a folder-based Application:- Name the manifest document
manifest.json and open its menu — or the Document properties panel. - Choose Sign, pick the signing key, and provide the encrypted backup and its passphrase.
- CharmIQ signs over the built bundle and writes the signature back into the manifest.
The signature covers the whole built bundle, not the manifest text alone — the same file closure the build pipeline produces. Re-sign after any change to the code.The Signature Block
Signing adds a signature block to the manifest and marks it version 2:{
"manifestVersion": 2,
"id": "my_app_v1",
"requestedScopes": ["appState.read", "appState.write"],
"signature": {
"signerId": "org:o_ab12cd:prod-2026",
"algorithm": "ed25519",
"bundleDigest": "9f2c8a…",
"signature": "base64…",
"signedAtMillis": 1752600000000
}
}
signerId names the Organization and key. bundleDigest is the fingerprint of the built files — what the signature is really over. Everything in the block except the signature value is itself signed, so none of it can be altered after the fact.Patterns
- Sign what you distribute. An Application other people drop into their own documents is the case signing exists for. A one-off inline tool doesn't need it.
- Guard the backup. The encrypted backup plus its passphrase is the key. Keep it where your Organization keeps secrets, never in the document.
- Rotate on doubt, not on a schedule. Archiving is cheap and never breaks an already-signed Application.
Next Steps
→ What is an Application? — Trust, consent, and the three kinds of Application.→ Developer | The Build Pipeline — The bundle a signature covers.