Privacy Policy
DexThemes is an open-source theme discovery and creation service for Codex. This policy covers the website, API, ChatGPT/Codex MCP app, and distributed plugins.
Data processed by ChatGPT and Codex tools
When you invoke DexThemes from ChatGPT or Codex, OpenAI sends the tool inputs you choose to DexThemes and receives the tool results needed to answer or render the app. Depending on the tool, those inputs can include a search query; a short aesthetic description, name, summary, ID, palette, code-theme choice, contrast, or light/dark variant; and text you ask DexThemes to place in a draft GitHub issue. Personalization needs only colors, mood, atmosphere, and non-sensitive preferences you explicitly request. Do not place secrets, credentials, contact details, sensitive traits, full conversations, hidden prompts, private repository contents, or a child's personal information in these fields.
Tool results can include public theme names and IDs, summaries, palettes, public creator display names, popularity counts and ranks, validation messages, Codex import strings, T3 Code theme JSON, and redacted GitHub issue drafts. Signed-in account tools can also return your GitHub display name or username, your published themes, creator and activity totals, ranks, popularity history, and achievement names. The get_profile tool returns the stable identifier from your verified OAuth subject, which can include a provider account identifier, so the host can identify your connected profile across token refresh and reconnection. The optional employee achievement reveals only whether the achievement is unlocked; tool results do not return the work email address. DexThemes removes internal database document IDs, authentication secrets, and debug payloads from MCP results. Recognizable personal identifiers and blocked public language are screened, but automated checks can miss context; review public wording before publishing.
Private drafting, validation, preview, apply preparation, and issue preparation do not by themselves persist a new theme in the DexThemes database. OpenAI may retain the conversation and tool inputs or outputs under the policy and workspace settings that apply to your OpenAI account. In full-page Studio, a theme becomes public after the signed-in user reviews its name, summary, and paired palettes and activates Create & copy once; Studio checks the returned public record before copying the selected variant. Other submission-review screens retain a separate Publish to DexThemes community action.
Clipboard and theme imports
Codex and T3 Code export tools prepare a palette for your review. Pressing a Copy control writes the displayed import string or theme JSON to your device clipboard. A Copy and open control then requests that your device open the destination app settings. These export controls do not read unrelated clipboard contents or automatically install, select, or apply the theme. You choose whether to paste the payload into Codex or T3 Code; that app then handles the imported data under its own settings and policies. The export contains theme names, colors, and display settings, not workspace contents or credentials.
Optional local T3 Code helper
If you run the DexThemes Mac helper and explicitly connect it to the website, an Apply in T3 Code click sends the selected theme JSON and its integrity hash to a service bound to your device's loopback interface. The helper validates the theme and invokes the installed T3 Code theme command to publish the palette and change the default theme in your local T3 environment. This may affect other desktop or web clients connected to that environment. It reads theme settings locally and keeps private staging files for recovery; it does not require or send T3 authentication credentials, workspace contents, or account information to DexThemes.
A single-use connection code authorizes an origin-bound, theme-only connection. The website stores its capability in session storage for the current browser session, up to twelve hours; it is not sent to the DexThemes backend or analytics. The helper keeps connection state in memory and logs bounded operation metadata without the connection secrets. Disconnect revokes the reachable connection and removes it from that browser tab; stopping or restarting the helper revokes all of its connections. Disconnect does not restore a previous theme. Your browser may separately ask for local-network access, whose permission is broader than this helper's theme-only interface.
Other data we collect
- Account and identity: GitHub's stable account identifier and public username, display name, and avatar used for sign-in, attribution, support, and account recovery. OAuth providers also process the authorization request, token, scopes, and session data needed to connect the account. Signed-in account tools synchronize this profile, establish a short-lived internal session, and grant eligible plugin achievements before returning account results.
- Employee achievement: when enabled and explicitly verified, the identity provider supplies an email and verification claim so DexThemes can check the exact
@openai.comdomain. DexThemes stores only the eligibility boolean and resulting achievement state, not that work email address. - Theme and community activity: published theme names, summaries, IDs, palettes, creator attribution, likes, copy and qualified-adoption counts, achievements, leaderboard results, moderation reports, and timestamps.
- Supporter claims: the Buy Me a Coffee transaction ID, supporter name and email supplied by that service, amount, currency, claim status, and relevant webhook event identifiers.
- Security and operations: short-lived OAuth state and plugin sessions, one-way network or identity hashes, rate-limit counters, request status and route logs, and error information needed to prevent abuse and operate the service. Hosting providers receive IP addresses when delivering requests. Rate-limit keys are hashed before storage; older cleartext keys are migrated when used or removed by the existing expiry cleanup. These hashes are pseudonymous, not proof of anonymity. DexThemes does not return these fields in MCP tool results.
- Website analytics: bounded product events such as page or feature use and a pseudonymous or signed-in user reference when Statsig is configured. DexThemes does not use this data for third-party advertising.
- AI theme generation: if you use the website's AI generation feature, the aesthetic description and theme settings needed to generate the palette are sent to OpenAI's API and the resulting palette is returned to DexThemes. DexThemes requests
store: falseand does not log the description or provider response. This does not change OpenAI's applicable processing or retention terms. Recognizable identifiers, credentials, and explicit under-13 requests are rejected before the provider call; detection is not a complete age or personal-data check.
Purposes and public visibility
DexThemes uses this data to authenticate users, find and generate themes, render previews, prepare Codex imports, publish user-confirmed community themes, calculate creator stats and achievements, operate leaderboards, prepare user-reviewed GitHub feedback, moderate content, prevent abuse, provide support, and maintain service reliability.
Public theme publication displays the confirmed theme data and creator display name. Public leaderboards can show theme names, creator display names, and aggregated counts. Supporter status never requires public listing; the supporter wall shows a public GitHub name, username, avatar, and unlock date only after explicit opt-in. A prepared GitHub issue is not posted by DexThemes; if you continue to GitHub and submit it, the issue and your GitHub identity become subject to the repository's visibility and GitHub's policies.
Recipients and service providers
Data is disclosed only as needed to operate the requested feature: OpenAI for ChatGPT/Codex tool routing and optional AI theme generation; Auth0 for MCP OAuth; GitHub for sign-in, public attribution, and user-submitted issues; Convex for application data and backend processing; Cloudflare for current website hosting and request delivery, plus configured Web Analytics page-view and browser performance metrics; Vercel for retained rollback deployment infrastructure that does not handle canonical production requests; Statsig for configured product analytics; and Buy Me a Coffee for supporter verification. These providers process data under their own terms and instructions applicable to the service. Public theme and leaderboard fields are available to anyone who uses DexThemes. DexThemes does not sell personal data.
Retention
- Website OAuth state expires after 10 minutes; its cleanup job runs every 5 minutes. Publication review-continuity tokens expire after 5 minutes. Internal MCP account sessions expire after 2 minutes; the separate DeepSeek client sessions expire after 1 hour. Expired plugin-session cleanup runs every 15 minutes. Cleanup uses bounded batches, so an expired record may remain until its batch is processed. Website login sessions expire after 30 days or are removed on logout.
- Unpublished MCP drafts are not stored as community records by DexThemes. For live Studio refinement, DexThemes temporarily stores the draft name, summary, dark/light palettes, and selected variant in Cloudflare Durable Objects. A random session capability connects the open Studio to its result; it does not grant access to your account. Preview requests expire after five minutes, after which reads reject the session and scheduled cleanup removes its stored state. These previews do not publish, save a community theme, or apply settings. Conversation retention is controlled by OpenAI and the user's OpenAI workspace settings.
- Published themes, attribution, aggregated activity, achievements, and moderation history remain while the content or account is active and as needed for integrity, abuse prevention, legal obligations, and dispute resolution.
- Rate-limit records expire at the end of their configured window, from 5 seconds to 1 hour, and expiry cleanup runs every 15 minutes in bounded batches. Legacy rows without an expiry are eligible for cleanup after 25 hours. Hosting, identity-provider, analytics, and operational logs follow each provider's configured retention and applicable terms; these are separate from rate-limit records.
- Supporter claim records remain while needed to verify access, prevent fraud, process refunds or revocations, meet legal obligations, and resolve support requests.
- Content submitted to GitHub or another provider is retained according to that provider's settings and policies.
Your controls
You can use anonymous discovery and drafting tools without linking a DexThemes account; decline OAuth linking; review a theme before publication; stop before pressing Publish; avoid opening or submitting a prepared GitHub issue; opt out of the public supporter wall without losing supporter access; and revoke connected-app access through the applicable identity provider. For access, correction, deletion where applicable, account closure, or removal of public content or a supporter listing, email support@dexthemes.com. These requests are handled manually; logout or disconnecting does not erase published themes or close the account. Do not send passwords, tokens, or unnecessary personal details. The maintainer may verify account control before acting and explain any applicable retention requirement. Public GitHub issues are for non-sensitive product feedback.
Security
DexThemes uses OAuth with PKCE, signed token verification, scoped access, hashed credentials and network identifiers where applicable, rate limits, server-derived identity, output allowlists, and exact-payload review before public submission. No online service can guarantee absolute security.
Children and changes
DexThemes is for people aged 13 and above who also meet the minimum age required in their location. It is not directed to children under 13. Do not provide children's personal information. If you believe a child's data was provided, contact support@dexthemes.com privately for review and removal; do not reproduce it in a public issue or an OpenAI tool request. Material changes will be posted here with a new effective date.
Contact
For privacy or security questions, use the support page. Do not include secrets or private workspace data in a public issue.