2026-05-24
Project Share Pages: One URL for a Multi-Artifact Handoff
How to share a set of AI-generated HTML artifacts safely: a project index page that lists outputs without rendering arbitrary HTML, plus noindex hygiene, expiry, and revocation.

Table of contents
- When a project link beats an artifact link
- The safe shape of a project share page
noindexis hygiene, not security- Expiry + revocation: plan the lifecycle
- Publishing patterns: API vs MCP
- A pre-share checklist
When a project link beats an artifact link
A single HTML artifact link is great when the deliverable is one thing: one report, one dashboard, one interactive summary.
A project link helps when the deliverable is a *bundle*:
- an executive summary + a detailed appendix
- a CI test report + a performance report
- a migration plan + a risk register + a checklist
In those cases, you do not want to paste five URLs into Slack and hope reviewers open them in order. You want **one handoff URL** that explains what the bundle is and points to the right artifacts.
If you are currently sharing multiple artifact links, start with Project Links for AI-Generated HTML Workflows and use the patterns below to keep the public share page safe.
The safe shape of a project share page
A project share page should not be “another artifact viewer”. It should be an index page that is safe even if it is shared widely.
A practical project share page includes:
- a plain title and short description (text only)
- a list of artifact entries: name, created date, and a link to view
- optional lifecycle controls applied server-side (expiry, revoked status)
noindex+ no-archive hygiene
What it should **not** include is arbitrary HTML content that the user (or an agent) can inject into the index page. Your artifact viewer is the place where untrusted HTML runs — inside a sandbox with security boundaries. The index page should stay static and non-executable.
This split matters: it reduces the blast radius of a project share link. Even if someone forwards the index URL outside your team, the index is still just an index.
`noindex` is hygiene, not security
Mark unlisted share pages as noindex (via a robots meta tag or the X-Robots-Tag header) so search engines do not index them. Google documents supported robots directives, and MDN documents X-Robots-Tag behavior.
But treat this as *hygiene*, not access control:
- crawlers must reach the page to see
noindex, and behavior varies by crawler - “not linked” is not a protection boundary — URL guessing and force-browsing are a known failure mode
OWASP’s Broken Access Control guidance is blunt here: every resource needs real access control, because attackers can and will modify URLs or directly request endpoints.
So use noindex, but always pair it with real controls: unpredictable share slugs, server-side authorization where appropriate, and revocation.
Expiry + revocation: plan the lifecycle
The easiest way to leak a share link is time: a link that was fine for a 30-minute review is still valid three months later.
Two defaults that work well for project share links:
- **Revocation is one click** (or one API call).
- **Expiry is optional but easy**: a share link can expire automatically after a date.
If you want a deeper workflow, see Expiry and Revocation: Make Unlisted HTML Links Safe to Share.
Publishing patterns: API vs MCP
BinHTML’s publishing split is about who owns the upload step:
- Use the API docs when your CI job or script already knows what artifacts to publish and which project they belong to.
- Use the MCP docs when an agent is still assembling the bundle and deciding what belongs in the handoff.
A practical pattern for multi-artifact handoffs is:
- publish each artifact as it is generated
- when the set is complete, produce (or update) the project index link
- share only the project link in chat, tickets, or email
A pre-share checklist
Before you share a project link externally (or even across teams), check:
- The index page does not render arbitrary user HTML (text + links only).
- The artifact viewer remains the only place untrusted HTML executes.
- The share page uses
noindexhygiene (and ideally no-archive). - The slug is unguessable enough that you are not relying on obscurity.
- Revocation is immediate, and expiry is set when the share is time-boxed.
- The artifacts themselves are stable, self-contained, and safe to open.
Final thought: a project share link should make review easier *without increasing the security surface*. Keep the index page boring, and put the complexity where you can sandbox it.
Sources
- https://owasp.org/Top10/en/A01_2021-Broken_Access_Control/
- https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Robots-Tag
- https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/meta/name/robots
- https://binhtml.com/docs/api
- https://binhtml.com/docs/mcp