GraphQL introspection is enabled in production
Your GraphQL API will describe its own schema to anyone who asks.
Why it matters
Your GraphQL API will describe its own schema to anyone who asks. That hands over every type, field, and mutation you expose — including internal or admin-only operations you never documented publicly — so an attacker can enumerate your entire API surface instantly instead of guessing at it. Introspection is a development convenience and is normally disabled in production.
How ShipReady detects it
Finds files and endpoints that are reachable but should not be. Probes a fixed set of well-known paths — version control directories, environment files, build configuration, debug routes — and derives others from the page's own bundles, such as a source map alongside each script. Every result is gated on content, not status. Many single-page apps answer 200 for every unknown path by serving their index shell, so a 200 alone proves nothing: a source map must parse as one, a directory listing must carry the index signature. Without that gate this check would report an entire class of SPA as catastrophically exposed.
Detection is deterministic. ShipReady reports this only when it observes the condition directly, and prefers to miss a real problem over inventing one. Rule version 1.2.0.
How to fix it
This is the prompt ShipReady puts in your report — written to be pasted straight into Cursor, Claude Code, or whichever assistant built the app.
GraphQL introspection is enabled in production, letting anyone download your full API schema. Disable it in your production configuration — most servers expose a flag for this (Apollo Server: `introspection: false`; graphql-js: pass a validation rule such as NoSchemaIntrospectionCustomRule). Keep it enabled in development, and if you need the schema for tooling, publish it from your build pipeline instead of serving it live. Consider also disabling field suggestions, which leak schema details even when introspection is off.
Frequently asked questions
- What does "GraphQL introspection is enabled in production" mean?
- Your GraphQL API will describe its own schema to anyone who asks.
- How serious is it?
- ShipReady rates this medium. Fix soon. Meaningfully weakens a defence or degrades how the site works.
- How do I fix it?
- Paste the fix prompt on this page into Cursor, Claude Code or your AI editor. It is the same prompt ShipReady puts in your report.
- Can I check my own site?
- Yes — ShipReady scans up to ten pages of any public site for free and reports this alongside every other check.
Related checks
Does your site have this?
ShipReady checks this and 73 other things across up to ten pages of your site. Free, no signup.
Scan my site