Repository navigation
a reviewer following our privacy policy URL would have hit a 404 - #2767
Merged
Merged
Conversation
Listing the MCP server in the ChatGPT app directory requires four reachable URLs, and two of them answered 404 on production: /privacy and /terms. They shipped to dev in #2759 and were waiting on a release that has twenty-odd unrelated commits in it. A reviewer clicking straight through to an error page is a rejection, so they come across on their own. The privacy policy is read off the code rather than drafted from a template, because overstating what we collect is as wrong as understating it. Every claim traces to a line: autocapture off and person profiles disabled in posthog-provider.tsx with nothing ever calling identify; analytics proxied through our own origin so the browser never reaches the analytics host; the server-side id a daily hash of the user agent with no IP stored; rate-limit buckets in an in-memory Map that never reaches disk. The terms carry two clauses that are load-bearing rather than boilerplate. "Not financial advice, we never execute transactions, never send us a key" is what the three negative test cases the review requires point at, and the MCP server was measured against those cases today. The conflict-of-interest disclosure repeats what publisher.json and /partners already say; all three must keep saying the same thing. The domain challenge route comes with them: verification fetches a token as plain text from /.well-known/openai-apps-challenge and the body must be the token alone. The token stays in an env var rather than the repo, because committing it would let anyone prove ownership of this domain for their own submission. Until it is set the route 404s, which is the honest state, so shipping it now costs nothing. Both pages are in the sitemap and linked from the footer; nothing in the rail or the body reaches them otherwise.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Listing the MCP server in the ChatGPT app directory requires four reachable URLs in the submission form, and two of them answer 404 on production:
/privacyand/terms.They shipped to
devin #2759 and were waiting on a release carrying twenty-odd unrelated commits. A reviewer clicking straight through to an error page is a rejection, so they come across on their own — same approach as #2764 for the MCP work.Already reviewed and merged on
dev; this carries only the legal files. Verified:site-footer.tsxandsitemap-builder.tsdiffer betweenmainanddevonly by these changes, so nothing unrelated rides along./privacy
Read off the code rather than drafted from a template, because overstating what we collect is as wrong as understating it:
posthog-provider.tsx—autocapture: false,person_profiles: "identified_only", and nothing in the codebase callsidentifyapi_host: "/ingest"— proxied through our own origin, the browser never reaches the analytics hostanalytics-server.ts— the server-side id is sha256(user agent + UTC day), no IP storedrate-limit.ts— buckets live in an in-memory Map, never written to disk/terms
Two clauses are load-bearing rather than boilerplate:
publisher.jsonand/partnersalready carry. All three must keep saying the same thing./.well-known/openai-apps-challenge
Domain verification fetches a token as plain text and the body must be the token alone. The token stays in
OPENAI_APPS_CHALLENGErather than the repo — committing it would let anyone prove ownership of this domain for their own submission. Until it is set the route 404s, which is the honest state, so shipping it now costs nothing and saves a deploy later.Verification
tsc --noEmitclean, 412 tests pass,pnpm validatepasses — all run againstmain's own base./partners,/methodologyand/contact, which the new copy links to, all exist onmain. SEO checks on staging: 0 FAIL, 0 WARN.