How to Keep One URL While an Agent Updates a Report, and Keep the Old Versions
Display is our product. An artifact is one HTML or Markdown file that Display publishes at its own URL. We checked the vendor facts on each vendor's own pages on 16 October 2026.
Display is our product. An artifact is one HTML or Markdown file that Display publishes at its own URL. We checked the vendor facts on each vendor's own pages on 16 October 2026.
Why a new URL for each run causes problems
Many setups give each run its own link. A new upload to a file host, a new deploy preview and a new chat attachment all do this. Four things stop working:
- Bookmarks and links. A link in a ticket, a Slack message or a Notion page points to the old run.
- Comments. Feedback stays on the old copy. The new copy starts with no comments.
- Trust. Readers do not know which copy is the current one.
- Access. Each new link needs its own sharing settings.
One URL solves all four. The link always shows the latest version. The sharing settings stay the same.
What you tell the agent
Publish the first version. Say: "Publish report.html to Display as 'Pipeline report' for my company." The agent returns the link. The short ID is in the link. In https://acme.dsp.so/YQyXggrM-pipeline-report, the short ID is YQyXggrM.
Publish the next version. Ask the agent to update the page at the same link with the new report.html. The agent reads the current version first, then publishes the next one. Visibility and invited people stay the same unless you ask the agent to change them.
Change one passage only. Say: "On the Pipeline report page, change 'Draft' to 'Approved'."
From MCP. The publish tool takes short_id, base_version and content, or an upload_id from create_upload for a large file. The edit tool takes short_id, base_version, old_text and new_text for one passage.
An update keeps the format of the artifact. A Markdown artifact takes .md updates. An HTML artifact takes .html updates. To change the format, publish a new artifact.
A GitHub Actions step
This job builds the report on a schedule and publishes it as the next version. Put the short ID in the repository variable DISPLAY_ARTIFACT_ID and the API key in the secret DISPLAYDEV_API_KEY.
name: Weekly pipeline report
on:
schedule:
- cron: "0 6 * * 1"
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 22 }
- run: npm ci
- run: npm run build:report
- run: |
AUTH="Authorization: Bearer $DISPLAYDEV_API_KEY"
API="https://api.display.dev/v1/artifacts/${{ vars.DISPLAY_ARTIFACT_ID }}"
BASE_VERSION=$(curl -sf -H "$AUTH" "$API" | jq -r .currentVersion)
curl -sf -X PUT "$API" -H "$AUTH" -H "If-Match: \"v$BASE_VERSION\"" -F file=@dist/report.html
env:
DISPLAYDEV_API_KEY: ${{ secrets.DISPLAYDEV_API_KEY }}The If-Match header carries the version that the job read. Read the version immediately before the update. If another publish happens between the read and the update, the API refuses the update. Run the job again. Publish from CI/CD shows the same job with the CLI.
An agent prompt
Every Monday, make the pipeline report again. Publish it to the Display artifact
<shortId> as a new version, keep the access setting, and post the link in #sales.Replace <shortId> with the short ID of your artifact. The agent needs Display connected and a way to post to Slack. For a full scheduled setup, read Claude Code routine for a weekly report.
Keep the build separate from the publish step
Use two steps. The first step builds the file. The second step publishes it. If the build fails, the publish step does not start, and the last good report stays at the URL. Do not let an agent write into the artifact while it still works on the report. Let it finish a file, check the file, and then publish it.
What happens on a conflict
The base version is the version that you edited. If the artifact has a newer version, the update stops and reports a version conflict. It does not overwrite.
- Ask the agent to read the newer version.
- Apply your change to that version.
- Ask the agent to publish again from the new version.
Roll back
On the artifact page in the dashboard, the Versions list lets you open or download an earlier retained version. Select Rollback next to a version to restore it. You can link to one version with the /_v/<n> path suffix, for example https://acme.dsp.so/abc123-quarterly-report/_v/2. An agent can also read an older version.
Version retention by plan
| Plan | Price | Retained versions |
|---|---|---|
| Free | €0 | Latest only |
| Solo | €15 a month | 10 |
| Pro | €49 a month | 50 |
| Enterprise | From €499 a month | Unlimited |
When a plan keeps 10 versions and the agent publishes version 11, Display deletes the oldest version. Prices exclude VAT. Read Plans and limits.
How it compares
| Approach | Same URL after an update | Earlier versions | Overwrite check | Comments tied to a version |
|---|---|---|---|---|
| New upload to a new link | No | Old links still exist, with no relation to the new one | No | No |
| Git and a static host | Yes, after a commit and a build | Git history | Git merge rules | No |
| Cloudflare Pages | Yes. The production URL uses the project name | You can roll back to an earlier production deployment | No | No |
| Netlify | Yes | Netlify keeps deploys for 30 days, or 90 days on paid plans. You can publish an older deploy again | No | No |
| Stacktree | Yes. The URL stays the same | Yes. The agent can list versions and restore one at the same URL | Not stated in its docs | Yes. A new revision resolves the comments that it answers |
| Display | Yes | 10, 50 or unlimited, by plan | Yes. A version check | Yes. Each discussion records its starting version |
Stacktree also keeps versions, and it has a passcode and link expiry. It fits a one-off client link. Display adds the version check, company sign-in and organization ownership.
When another tool is better
- A public site that a build pipeline already deploys. Cloudflare Pages or Netlify fit better. You already have the build.
- Full source history with diffs and review. Use Git. Display keeps versions of the published file, not a code history.
- A passcode or an expiry date on the link. Stacktree has them. Display does not.
FAQ
Do comments stay after an update?
Yes. Each discussion records the passage and the version where it started. If the passage is not in the current version, the reader selects Open that version to see the original context. Read How an agent reads review comments.
Does the URL change when I rename the artifact?
The slug in the URL changes to match the new name. Old URLs continue to work through the short ID. The short ID does not change.
Do viewers see the new version at once?
Viewers who have the artifact open get a Refresh to vN action. The agent can also refresh open tabs when the new version is ready. An open comment form delays that refresh. Use automatic refresh during your own work, and leave it off during a review so that readers choose when to refresh.
Does an update change who can open the artifact?
No. Visibility and invited people stay the same unless you ask the agent to change them.
What is the size limit?
Free allows 10 MB for each artifact. Solo, Pro and Enterprise allow 50 MB. Read Plans and limits.
Can I see who published each version?
Yes. Display records who published each version. A CI publish can carry a label such as ci-deploy for the audit log. Read Publish from CI/CD.
Free tier. No credit card. One-time password auth for viewers on free, Google + Microsoft SSO on Pro (€49/month flat).