# Can a Codex Site have a custom domain? · Stacktree

Source: https://stacktr.ee/blog/codex-sites-custom-domain

[Skip to content](#main) [Stacktree](/)[Developers](/developers)[Agents](/agents)[Docs](/docs)[Use cases](/use-cases)[Pricing](/pricing)[Blog](/blog)[Dashboard](https://app.stacktr.ee)[Sign in →](https://app.stacktr.ee)      By [ Steve Smith ](/about) · Founder, Stacktree  ·  Last updated September 11, 2026          blog

#  Can a Codex Site have a custom domain? Not under the documented model.

   Status as of 11 September 2026: yes. Custom domains arrived with the July 2026 GA as ChatGPT Sites and were re-announced on 11 September. This post keeps the June 2026 beta-era answer as a record; the current how-to, plan caveats and DNS reality are at /chatgpt-sites-custom-domain. What has not changed is the pattern for a page that should open on your domain with no ChatGPT account at all.

  [ Get started free ](https://app.stacktr.ee/?join=1&from=seo_blog_codex_sites_custom_domain)   install npx stacktree-install
Copy
     No card · 3 pages free · about a minute

##  Can a Codex Site have a custom domain?

Yes, since July 2026. ChatGPT Sites, the GA of Codex Sites, lets the Site owner connect an apex domain or subdomain they already own by adding the DNS records Sites provides at their domain provider, where the feature is available and not in Enterprise workspaces at launch. The June 2026 beta had no domain layer at all, which is the state the rest of this post records. For the current walkthrough see [ChatGPT Sites custom domains, explained](/chatgpt-sites-custom-domain).

## On this page

  -   01  [ The short answer ](#short-answer)
-   02  [ Why the address is OpenAI’s, not yours ](#why)
-   03  [ When you actually need a custom domain ](#when)
-   04  [ How to put agent output on your own domain today ](#today)
-   05  [ What would change this answer ](#watch-list)

## The short answer

 Superseded. The section below is the beta-era record from June 24, 2026. Since the July 2026 GA as ChatGPT Sites, custom domains are documented (owner-only, DNS records at your provider, not in Enterprise workspaces at launch), and OpenAI re-announced them on 11 September 2026. Current guidance: [ChatGPT Sites custom domains, explained](/chatgpt-sites-custom-domain).

 As of June 24, 2026, a Codex Site could not have a custom domain under the documented model. OpenAI documents deploying and hosting a Site at its own URL, and controlling who in your workspace can view it through three access modes. There is no documented way to attach a domain you own, change the hostname, or add a DNS or CNAME record. The OpenAI-managed URL is the address.

 That is consistent with what Sites is for. The feature is positioned around internal tools, dashboards, and shared workspaces, and an internal tool does not usually need a vanity domain. The gap only bites when the thing you built is meant to leave the company: a client-facing page, a public microsite, a deliverable that should sit at your-company.com. That is a different job, and it is the job a custom domain exists for.

## Why the address is OpenAI’s, not yours

 Codex Sites hosts your deployment and scopes access at the workspace level. The three documented access modes (admins_only, workspace_all, and custom) all decide which members of your OpenAI workspace can open the Site; none of them touch where the Site lives or what it is called. There is no domain layer in the documented model at all, so there is nothing to point a custom domain at.

 This is coherent for an internal tool. If a Site is only ever opened by people inside your workspace, the URL is plumbing, not branding, and an OpenAI-managed address is fine. The design optimizes for "deploy fast, share with the team," not for "publish under our brand." Neither is wrong; they answer different questions, and custom domains belong to the second one.

## When you actually need a custom domain

 A custom domain matters the moment the audience is external. A few cases where the OpenAI URL stops being enough:

  - Client deliverables. A report, proposal, or dashboard you hand to a customer reads very differently at your-firm.com than at a vendor URL.
 - Public microsites. A landing page, a launch page, or a one-pager that anyone should be able to open, indexed and shareable, lives on a domain you control.
 - Permanence and portability. A domain you own is an address you keep. If the underlying host changes, the URL you have shared does not have to.
  If your output never leaves the workspace, none of this applies and Sites is a fine home for it. If it does, you need a published page on a domain you control, which is a publish step Sites does not document.

## How to put agent output on your own domain today

 Full disclosure: this section describes Stacktree, which is our product, so read it as us explaining where we fit rather than as neutral advice. If what you need is agent output living on your own domain, with no ChatGPT account required to view it, the pattern today is different from deploying a Codex Site, and it is worth being honest about both what it does and what it gives up.

 The pattern is not to export or move a Codex Site. There is no documented way to do that, and Stacktree does not do it. Instead, you have the agent render a static HTML view of what you want to show and publish that HTML to an open host. Codex can do this directly: it generates the HTML and calls a publish tool over MCP, without leaving the session.

 Stacktree is the open host in that pattern, and it supports custom domains. A published site is private by default, with the unguessable URL as the credential, so a viewer needs no ChatGPT account, or any account, to open it. From the Solo plan up you attach your own domain through Cloudflare for SaaS: add a CNAME, verify it, and the page serves from your-company.com instead of a vendor URL. `update_site` replaces the content in place at that stable address, so the link you shared keeps working as the page changes. It is MCP-native, so it works from Codex, Claude Code, Cursor, and Claude.ai rather than inside one agent, and it is source-available and self-hostable on your own Cloudflare account.

 The trade is real and you should weigh it. Stacktree hosts static HTML only: no server logic, no application database, no in-browser editor. If you need a full internal app with persistence behind it, the kind of thing Sites in Codex is built to deploy, Stacktree is not that, and Sites is the right tool. Stacktree fits the narrower case: a page anyone can open by link, on your own domain, that you can take with you. The two are not substitutes; they answer different questions.

## What would change this answer

 This is a living status post, refreshed when OpenAI ships a change. The first item fired in July 2026, and the second in two steps (public publishing in July, named external viewers in September). Here is the original watch-list with its status:

  - Documented custom-domain mapping. Resolved, July 2026. OpenAI documents attaching a domain you own via DNS records; the headline answer flipped and this post now says so at the top.
 - A public or external-viewer mode. Resolved in two steps. Public publishing arrived with the July GA; named external viewers, who must sign in with a ChatGPT account, arrived in September 2026. A link-only private mode is still absent. See [our note on whether you can make a Codex Site public](/blog/can-you-make-a-codex-site-public).
 - Export or self-hosting. Not documented today. A path to download the code or move a deployment would let you take it to any host and put it on your own domain.
  Export and self-hosting remain undocumented as of 11 September 2026. The rest of this post is kept as a dated record of the beta.

     See it in one call, no account

```
`curl -X POST https://api.stacktr.ee/sites -F file=@index.html
# &rarr; a private URL, live for 24h. Claim it free to keep it.`
```

If your agents emit HTML, they need a durable publish target: publish once, then
`update_site`
on every revision keeps the same URL forever. MCP, REST, and skills all speak it:
        the map is at [agent.txt](https://stacktr.ee/agent.txt).

[
Get an API key free
](https://app.stacktr.ee/?join=1&from=bridge_blog_codex_sites_custom_domain)
FAQ

## Frequent questions

     Can a Codex Site have a custom domain? +  Yes, since the July 2026 GA as ChatGPT Sites, and re-announced on 11 September 2026. Where the feature is available you connect an apex domain or subdomain you already own by adding the DNS records Sites gives you at your provider; only the Site owner can configure it, and it is not available in Enterprise workspaces at launch. The step-by-step and the plan caveats are in our current how-to, /chatgpt-sites-custom-domain. The beta-era answer below was "no".   Can I use my own domain with Codex Sites? +  Yes, where custom domains are available on your plan and workspace. OpenAI's help center documents the flow: open the Site's settings, choose Add domain, enter the apex domain or subdomain, copy the DNS records Sites provides into your domain provider, and refresh the status. In the June 2026 beta this was not documented at all; it arrived with the ChatGPT Sites GA.   Does Codex Sites support a CNAME or DNS setup for a custom domain? +  Yes. The help center says Sites "does not register a domain for you. You must already own the domain and be able to change its DNS records", and that you "copy the DNS records and values Sites provides, and add them through your domain provider". The exact record types are shown in the connect flow rather than published in a general reference. Users in the September 2026 launch thread reported provider quirks, such as a registrar appending the domain to the host field.   Why would I want a custom domain for a Codex Site? +  For anything client-facing or branded: a page you hand to a customer, a public microsite, or a deliverable that should live at your-company.com rather than an OpenAI URL. Those are external, branded jobs, which is different from the internal-tool job Sites is built for, so the workspace-scoped OpenAI URL is the documented design.   How do I put agent-built output on my own domain today? +  Have the agent render a static HTML view of what you want to show and publish that HTML to an open host that supports custom domains. The agent can do this in-session: Codex can generate the HTML and call a publish tool over MCP. The published page can then sit on your own domain, with no ChatGPT account required to view it.   Can I move a Codex Site to my own domain? +  There is no documented export or download for a Codex Site, so you cannot lift a deployed Site and re-host it. The practical path is not to move the Site but to publish a static HTML version of the same view to a host that supports custom domains, and point your domain there. Stacktree, the product this blog belongs to, is one such host, and an agent can publish to it over MCP rather than through a dashboard.
Keep reading

## Related guides

   -  [ Can you make a Codex Site public? The sister question: why every private mode still needs a signed-in ChatGPT account, and how to get a public link. ](/blog/can-you-make-a-codex-site-public)
-  [ OpenAI Codex Sites alternative For agent output that needs a public link, on your own domain, anyone can open. ](/openai-codex-sites-alternative)
-  [ What is Sites in Codex? A plain reading of the docs: how Sites works, who can view, and what it costs. ](/blog/sites-in-codex-explained)
-  [ Publishing from Codex Using Codex with an MCP-native, cross-agent publish primitive. ](/codex)

References

## Sources and further reading

   -  [ OpenAI, Sites in Codex docs ↗ The primary source for hosting on an OpenAI URL, the three workspace access modes, and the absence of any documented custom-domain or DNS step. ](https://developers.openai.com/codex/sites)
-  [ OpenAI, Codex changelog ↗ Where Codex feature releases, including the June 2026 Sites launch, are recorded. Useful for checking whether custom-domain support has shipped since. ](https://developers.openai.com/codex/changelog)
-  [ ChatGPT Sites update: 5M sites, private sharing, custom domains (@ChatGPT) ↗ The 11 September 2026 announcement: invite teammates to edit, invite specific people to a private Site, database inspection, custom domains. ](https://x.com/ChatGPT/status/2098457920291946894)
-  [ Cloudflare for SaaS (custom hostnames) ↗ The mechanism Stacktree uses to serve a published site from a customer-owned domain via a verified CNAME. ](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/)

##  Want agent output on your own domain?

 Stacktree publishes agent-made HTML to a link anyone can open, no ChatGPT account. Custom domains are on Solo, $19 a month.

 [ Sign up free → ](https://app.stacktr.ee/?join=1&from=cta_blog_codex_sites_custom_domain)   install npx stacktree-install
Copy
       Private hosting for the HTML your agents make.

[](https://betalist.com/startups/stacktree?utm_campaign=badge-stacktree&utm_medium=badge&utm_source=badge-featured)[Featured on](https://devhunt.org/tool/stacktree)[](https://buildlist.io)[Get started free](https://app.stacktr.ee/?join=1)

## Product

- [Templates](/templates)
- [Example deliverables](/examples)
- [Custom domains](/custom-domains)
- [Client feedback](/client-feedback-loop)
- [One-time links](/one-time-view-links)
- [See how pages get read](/page-engagement)
- [Made with Stacktree](/made-with)
- [Security](/security)
- [Watch the demo](/demo)

## Agents

- [All integrations](/agents)
- [Claude Code](/claude-code)
- [OpenAI Codex](/codex)
- [Cursor](/cursor)
- [Claude.ai connector](/claude-ai-connector)
- [MCP server](/mcp-publish-html)
- [Deploy from Claude Code](/deploy-html-from-claude-code)
- [Skills](/skills)
- [Slack app](/slack)
- [n8n node](/n8n)
- [Agent payments (x402)](/x402)

## Alternatives

- [All comparisons](/alternatives)
- [Head-to-head comparisons](/compare)
- [Tiiny Host](/tiiny-host-alternative)
- [GitHub Pages (private)](/github-pages-private-alternative)
- [Vercel](/vercel-alternative-for-agents)
- [ngrok](/ngrok-alternative-for-html)
- [Display.dev](/display-dev-alternative)
- [Static.app](/static-app-alternative)
- [OpenAI Codex Sites](/openai-codex-sites-alternative)
- [here.now](/here-now-alternative)
- [Shippage](/shippage-ai-alternative)
- [Best private hosting](/best-private-html-hosting)

## Use cases

- [All use cases](/use-cases)
- [Share with clients](/share-with-clients)
- [Send a file to a client](/share-html-file-with-client)
- [Share Claude artifacts](/share-claude-artifacts)
- [Share Jupyter notebooks](/share-jupyter-notebook-html)
- [Host Storybook privately](/host-storybook-privately)
- [Architecture diagrams](/share-architecture-diagrams)
- [AI-generated reports](/host-ai-reports)
- [Internal HTML tools](/internal-tool-hosting)
- [Private HTML hosting](/private-html-hosting)
- [Vibe-coded page hosting](/vibe-coding-hosting)
- [Leave a website builder](/website-builder-migration)

## Learn

- [Blog](/blog)
- [Glossary](/glossary)
- [FAQ](/faq)
- [Agent-loop hosting](/agent-loop-hosting)
- [Why agents need a publish primitive](/blog/why-agents-need-a-publish-primitive)
- [MCP servers explained](/blog/mcp-servers-explained-for-developers)
- [What changed in the 2026-07 MCP spec](/blog/mcp-2026-spec-changes)
- [Sites in Codex explained](/blog/sites-in-codex-explained)
- [Private-by-default hosting](/blog/private-by-default-html-hosting)
- [An agent paid us $1 (x402)](/blog/agent-paid-to-provision-itself)
- [When a loop hits a paywall](/blog/loop-engineering-paywall)
- [Pricing](/pricing)
- [Self-host (new)](/self-host)
- [Changelog](/changelog)
- [Docs](https://stacktr.ee/docs)
- [About](/about)
© 2026 Stacktree · stacktr.ee

[Privacy](/privacy)[Terms](/terms)[Security](/security)[Dashboard](https://app.stacktr.ee)[npm](https://www.npmjs.com/package/stacktree-mcp)[Sitemap](/sitemap.xml)[llms.txt](/llms.txt)[API spec](/openapi.json)

---
Full markdown summary of the Stacktree marketing surface: https://stacktr.ee/llms-full.txt
