# Extension points — cypress-io/cypress

> Canonical page: https://codevetter.com/unpack/cypress/extension-points

# Extension points — cypress-io/cypress

Scanned commit 7d987f04740f8f5388ac3116e8ef7957373ead14 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Public customization is concentrated in Cypress command registration, setupNodeEvents, component adapters, and CLI APIs. Internal extension seams include injected network ports, ordered policies, generated frontend routes, and Nexus schema plugins. New code should enter through the owning seam because transport, generated-artifact, and process boundaries constrain implementation placement.
- Cypress.Commands supports add/addAll, overwrite, and addQuery; registration protects built-in/reserved names and derives parent/child/dual command behavior from prevSubject. — [packages/driver/src/cypress/commands.ts#L70-120](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/src/cypress/commands.ts#L70-L120) [packages/driver/src/cypress/commands.ts#L123-165](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/driver/src/cypress/commands.ts#L123-L165)
- setupNodeEvents receives registerChildEvent and initialConfig; event registrations are validated, repeated task registrations merge, and a default file preprocessor is installed only when the user supplies none. — [packages/server/lib/plugins/child/run_plugins.ts#L65-105](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/plugins/child/run_plugins.ts#L65-L105) [packages/server/lib/plugins/child/run_plugins.ts#L113-136](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/plugins/child/run_plugins.ts#L113-L136)
- Plugin execution dispatch has specific wrappers for dev-server:start, file:preprocessor, browser launch, tasks, and run/spec/screenshot lifecycle events. — [packages/server/lib/plugins/child/run_plugins.ts#L149-173](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/server/lib/plugins/child/run_plugins.ts#L149-L173)
- NetworkInterceptionCore accepts injected policy, request/response, document preparation, capture, cookie, command-log, and browser-automation ports; effects are delegated rather than embedded in matching logic. — [packages/network-interception/lib/core/network-interception-core.ts#L20-38](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/network-interception/lib/core/network-interception-core.ts#L20-L38) [packages/network-interception/lib/core/network-interception-core.ts#L118-167](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/network-interception/lib/core/network-interception-core.ts#L118-L167)
- NetworkPolicyRegistry.add appends policies; runPolicies filters by phase and when(exchange), applies policies sequentially with shared state, and stops after end(). — [packages/network-interception/lib/registry/network-policy-registry.ts#L21-30](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/network-interception/lib/registry/network-policy-registry.ts#L21-L30) [packages/network-interception/lib/registry/network-policy-registry.ts#L36-85](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/network-interception/lib/registry/network-policy-registry.ts#L36-L85)
- Frontend pages plug into virtual:generated-pages and generated layouts; createRouter adds default-page redirection and installs the Studio unsaved-changes navigation guard. — [packages/app/src/router/router.ts#L1-22](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/app/src/router/router.ts#L1-L22) [packages/app/src/router/router.ts#L70-78](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/app/src/router/router.ts#L70-L78)
- GraphQL extension uses schemaTypes, remote-schema merging, and structural/runtime Nexus plugins; mutations and filesystem writes are intended to run through DataContext.actions. — [packages/data-context/graphql/schema.ts#L4-7](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/graphql/schema.ts#L4-L7) [packages/data-context/graphql/schema.ts#L29-54](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/graphql/schema.ts#L29-L54) [packages/data-context/src/DataContext.ts#L182-187](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/packages/data-context/src/DataContext.ts#L182-L187)
- Component integration offers defineComponentFramework and a devServer contract returning port/close; tap has an ordered CLI command registry that precedes commands advertised by the running session's schema. — [cli/lib/cypress.ts#L82-98](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/cypress.ts#L82-L98) [npm/vite-dev-server/src/devServer.ts#L13-23](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/npm/vite-dev-server/src/devServer.ts#L13-L23) [npm/vite-dev-server/src/devServer.ts#L78-89](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/npm/vite-dev-server/src/devServer.ts#L78-L89) [cli/lib/tap/commands/index.ts#L10-15](https://github.com/cypress-io/cypress/blob/7d987f04740f8f5388ac3116e8ef7957373ead14/cli/lib/tap/commands/index.ts#L10-L15)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
