Blog
What Is a Capability URL? Secret Links Explained
Some links are more than addresses — they are the key. Here is how capability URLs work, where you already use them, and what that means for AI memory.

The link is the credential
A capability URL (also called a secret link, bearer URL, or unguessable URL) is a web address that doubles as access control. There is no separate login step. Anyone who holds the full URL can read whatever it points to. Anyone who does not have the URL cannot practically guess it.
The W3C Technical Architecture Group defines this pattern formally: instead of asking users to authenticate with a password, information is published at an obscure or unguessable URL, and the link is provided only to people who should have access. Possession of the URL grants the capability to read the resource.
Capability URL vs username and password
Traditional authentication asks two questions: who are you? and prove it. A capability URL collapses both into one long, random string embedded in the path.
- Login model: You authenticate once, then the server checks your session on every request.
- Capability model:You share a secret URL. The server serves the resource to anyone who presents that exact URL — no account required on the reader's side.
The W3C notes this is especially useful when the reader is a tool, not a person — for example, an HTTP API client that performs many small requests without re-authenticating on each one. The same idea applies when ChatGPT or Claude fetches your standing context from a URL you pasted into custom instructions.
Where you already encounter them
Capability URLs are not a new invention. The W3C document lists password-reset links, calendar private addresses, GitHub gists, and Flickr guest passes as everyday examples. You have almost certainly used this pattern before:
- Google Docs / Drive: "Anyone with the link" sharing lets recipients open a file without signing in to a Google Account.
- Dropbox password resets: The W3C cites Dropbox reset links as a classic one-shot capability URL — anyone with the emailed link can change the account password.
- GitHub secret gists: Secret gists do not appear in Discover and are not searchable by others, but anyone with the URL can read the content. GitHub's docs are explicit: "Secret gists aren't private."
- Calendar feeds, Figma share links, Notion pages: Same idea — possession of the link is possession of access.
What makes a capability URL secure enough
Security here is about unguessability, not encryption. The content at the URL is served over HTTPS like any other page, but anyone who obtains the link can read it — including if it appears in a shared chat log or forwarded message.
The W3C compares capability URLs to passwords: they should be kept secret, served over HTTPS, and revocable when compromised. Their design guidance includes:
- High entropy: URLs must be unique and not guessable — sequential IDs like
/access/123are trivial to scan. The W3C recommends unguessable identifiers such as a version 4 UUID. - HTTPS: Capability URLs should be
httpsURLs so the secret is not exposed in plain text during transport. - Revocation: Authenticated users should be able to revoke compromised capability URLs — ideally with separate URLs per recipient so one leak does not force everyone to get a new link.
- Referer leakage: Links on capability-protected pages can leak the secret via the HTTP
Refererheader. The W3C recommendsrel="noreferrer"on outbound links where third-party destinations are unavoidable.
The W3C also warns that URLs were not originally designed to stay secret — they appear in browser history, server logs, and referrer headers. Treat a capability URL with the same care you would a password reset link or a shared Google Doc.
Why AIMemLink uses a capability URL for private memory
AIMemLink stores your AI context as plain text at a fetchable URL. Your private link follows the gist-shaped pattern:
aimemlink.com/you/a3f8c2d19e4b7065f1a8d3c2b9e7f604.txt- Your username is the handle — human-readable, like a gist owner.
- The 32-character hex slug is the secret — 128 bits of entropy from a cryptographically secure random source, unguessable from the username alone.
- No auth header required — ChatGPT, Claude, and Gemini can fetch the URL with a standard HTTP GET when you paste it into standing instructions.
Knowing someone's username gives you their optional public profile at /{username}/public-memory.txt. It does not reveal their private link. That separation is deliberate: public basics for demos, full memory behind the secret URL.
What to put in a capability URL (and what to skip)
Treat a capability URL like a shared Google Doc link. It is fine for personal context you are comfortable sharing with anyone who holds the link — work role, communication preferences, active projects with dates, standing rules for how AI should respond.
Do not store:
- Passwords, API keys, or authentication codes
- Financial account numbers
- Regulated health or legal data unless truly necessary
- Third-party private information without consent
GitHub's guidance on secret gists applies broadly: a URL-only credential is convenient, not a vault. Private links are unguessable, not encrypted.
How to keep a capability URL safe in practice
- Paste intentionally. Put the link in custom instructions or project settings — not in public forums, issue trackers, or screenshots.
- Rotate if it leaks. The W3C recommends revocation when a capability URL is compromised. AIMemLink lets you rotate from the dashboard or Telegram
/rotate. Every URL from before the rotation stops working immediately. - Watch for fetches. Telegram alerts you when AIMemLink receives a request to your private link — a signal that something is reading your memory.
- Keep content current. Your link always returns your latest memory. Edit on the web or append via Telegram; you do not need to re-paste the URL after every update.
When a capability URL is the right tool
The W3C outlines three situations where capability URLs make sense: avoiding login for low-friction access, enabling easy onward sharing through networks, and reducing authentication overhead in APIs. For AI memory, the pattern lets you write context once and point every assistant at the same URL — no extension, no connector, no repeated copy-paste into every chat.
They are the wrong tool when you need fine-grained per-user permissions, audit trails of who read what, or encrypted-at-rest guarantees beyond HTTPS transport. For standing personal context shared with AI tools you already trust, the tradeoff is usually worth it — the same tradeoff millions of people already make with shared document links every day.
Further reading
Ready to create your AI memory?
Write your context, use your private link for personal memory, and publish optional public basics when you want them discoverable by username.