Rover CLI Error Codes

Error code reference


Rover has a number of predefined error codes that you may run into. You can see descriptions and potential solutions directly in Rover by running rover explain <CODE>.

This page acts as an index of all of these codes and their descriptions for quick reference.

Codes

E001

This error occurs when the expected JSON response from a GraphQL endpoint can't be deserialized.

This is most likely caused by an invalid endpoint or headers, causing the server to return something that is not JSON (like an HTML error page).

Try running the command again with --log trace to see what the GraphQL endpoint is responding with.

If this error occurs on a command interacting with the Apollo Registry, please open an issue and let us know!

E002

This error occurs when trying to build headers for requests, and a header name is invalid.

Examples of an invalid header name include header names with included spaces and non-ascii characters in the name.

To resolve, check your headings for any unusual characters.

If this error occurs on a command where you aren't providing headers, please open an issue and let us know!

E003

This error occurs when trying to build headers for requests, and a header's value is invalid.

To resolve, check your headings for any unusual characters.

If this error occurs on a command where you aren't providing headers, please open an issue and let us know!

E004

This error can occur in a number of places. It indicates an error occurring when actually executing a request.

This error commonly occurs when the server can't be reached, or network connection is lost.

To debug, use the --log trace flag to expose more detailed logs of the specific error that's being encountered.

E005

This error is unexpected behavior, and likely the result of a programming mistake made in the graph registry.

This error shouldn't be reachable under normal circumstances, but if it does occur, please open an issue and let us know.

E006

This error is unexpected behavior, and likely the result of a programming mistake made in the graph registry.

This error shouldn't be reachable under normal circumstances, but if it does occur, please open an issue and let us know.

E007

This error occurs when using a subgraph command on a non-federated graph.

Either the graph you're trying to run this operation on isn't federated or the specified variant isn't. Double check the specified graph@variant combination is valid and federated.

E008

This error occurs when an invalid variant is specified for a command.

Double check your spelling or open the graph in Apollo Studio to verify that the variant you're trying to use is valid.

If you didn't pass a variant in the format graph@variant, then the default variant, current is used. If you encounter this error without providing a variant, it likely means the current variant does not exist.

E009

This error occurs when working with federated graphs and the subgraph --name provided doesn't exist as a valid subgraph.

To find a list of subgraphs already published to a graph, open the graph in Apollo Studio or run rover subgraph list <GRAPH_ID>@<VARIANT>.

E010

This error can occur because of graph lookup issues or authentication failures.

Graphs you don't have permission to will always error as unavailable for security purposes. Check your API keys with rover config whoami and make sure your graph IDs are properly spelled.

If applicable, check with your graph admin to make sure permissions and keys haven't changed.

E011

This error occurs when an introspection response from a GraphQL endpoint can't be parsed properly.

Verify your endpoint is correct, and use --log trace to make sure the response from the server is the expected JSON response. If you're still seeing this error with the correct introspection response from the server, please open an issue and let us know!

E012

This error occurs when an endpoint returns an HTTP status between 400-599.

These errors are most common with a misuse of an endpoint. If you are running introspection commands or fetching from an endpoint for composition, it's likely you misused headers or specified the wrong url.

Check your urls, headers, and if needed, run the command again with --log trace to see specific details about the request/response.

E013

This error occurs when an API key isn't recognized by the graph registry. Your key may have been disabled, changed, or saved improperly.

Try running rover config whoami to debug API key issues.

Check the length of the key shown in the response of this command and make sure it's what you expect. Sometimes double-pasting the key when running auth can happen.

E014

This occurs when an API key is not in the format expected.

Registry API keys are in one of the following formats:

user:my-username:secretkey service:graph-id:secretkey

If you're getting this error, it's because the key couldn't be parsed properly based on these formats. Run rover config whoami to make sure your key looks like you expect it to.

The middle of the key is masked for security, but you should be able to see the user or serv at the beginning of the key, and the last few characters of the key, along with its length.

E015

This error occurs when Rover's update checking fails because of release versions not being in the correct format.

If you encounter this issue, please open an issue and let us know!

E016

This error occurs when trying to setup a configuration profile, and Rover is unable to create the directory to store this information in.

This is usually a permissions issue. If your system's default configuration directory is inaccessible, you can use the APOLLO_CONFIG_HOME environment variable to choose a different directory. See Rover's configuring docs for more info.

E017

This error occurs when trying to setup a configuration profile, and Rover is unable to determine your system's defauly configuration directory.

You can use the APOLLO_CONFIG_HOME environment variable to tell Rover where to save and find configuration info. See Rover's configuring docs for more info.

E018

This error occurs when using the APOLLO_CONFIG_HOME environment variable improperly.

This variable should reference a directory to store configuration info in, but the current value is likely pointing to a file rather than a directory.

Check your APOLLO_CONFIG_HOME variable and the intended destination.

E019

This error occurs when trying to clear all of Rover's local config, but none is found.

This may be the result of running the rover config clear command multiple times, or an update to your APOLLO_CONFIG_HOME variable.

See Rover's configuration docs for more on how to manage Rover's configuration.

E020

This error occurs when trying to run a command that needs to use a configuration profile or an API key, but none are found.

This is likely because you haven't set up a configuration profile yet or your APOLLO_KEY has been removed.

Run rover auth login to sign in with OAuth, or rover config auth to store a Personal API Key in a new configuration profile. In CI, set APOLLO_KEY to an API key, or APOLLO_CLIENT_ID and APOLLO_CLIENT_SECRET to a client-credential pair. You can also check out Rover's configuration docs for more on how to set up and use Rover.

E021

This error occurs when trying to use a configuration profile that can't be found.

This is most likely the result of a typo when running a command with the --profile option or saving a new profile.

Run apollo config list to see a full list of available configuration profiles or apollo config auth to set up a new one.

Check out Rover's configuration docs for more on how to set up and use Rover.

E022

This error occurs when trying to load the contents of a configuration profile, and there is nothing available to load that isn't sensitive.

This likely occurred because configuration profiles were cleared. Try running rover config auth and setting up a new configuration profile.

E023

This error occurs when trying to save or load a configuration profile using a file path that is not valid UTF-8.

This is likely due to an invalid path in your APOLLO_CONFIG_HOME environment variable.

Check your environment variable or use --log trace for more information about the path that Rover is trying to use.

E024

This error occurs when Rover tries to load a configuration profile that has been modified with invalid TOML.

If you modified a configuration file by hand, double check to make sure your formatting is appropriate.

If you did not intentionally modify a configuration profile, you may need to delete the profile and re-create it with rover config delete <NAME> and rover config auth --profile <NAME>.

If this error persists, please open an issue and let us know.

E025

This error occurs when trying to save a configuration profile, and Rover can't serialize it appropriately to TOML.

If this error occurs, please open an issue and let us know.

E026

This error occurs when Rover runs into an issue loading or saving a configuration profile.

This may happen as a result of a typo in a profile name, or a profile name being incorrect.

Double check your command usage, and list available profiles with rover config list.

If this error persists, please open an issue and let us know.

E027

This error occurs when working with a federated graph and its subgraphs. When graphs can't be composed due to errors, no final supergraph schema can be built.

To resolve this error, inspect the printed errors and correct the subgraph schemas.

E028

This error occurs when Rover could not connect to an HTTP endpoint.

If you encountered this error while running introspection, you'll want to make sure that you typed the endpoint correctly, your Internet connection is stable, and that your server is responding to requests. You may wish to run the command again with --log=debug.

E029

This error occurs when you propose a subgraph schema that could not be built.

There are many reasons why you may run into build errors. This error should include information about why the proposed subgraph schema could not be composed. Error code references can be found here.

E030

This error occurs when an operation check fails. This means that you proposed a schema that would break operations in use by existing clients. You can configure this behavior in the Checks -> Configuration view in Apollo Studio, and you can read more about client checks here.

E031

This error occurs when Rover made an HTTP request and it timed out.

The client timeout that Rover sets is configurable. You can increase Rover's request timeout, but it's also possible that you've made a request for too much data from the Studio API, or that the Studio API is experiencing degraded performance. You can check for known performance issues on our status page.

E032

This error occurs when rover tries to start a graph or subgraph asynchronous check with invalid inputs.

Please double check your inputs before running again.

E033

This error occurs when Rover tries to run an operation that you don't have permission for, such as starting a graph or subgraph check.

Check your API keys with rover config whoami and if applicable, contact your graph admin to request access.

E034

This error occurs when Rover runs into a billing plan limit while trying to perform an action.

This is likely to be from reaching rate limits while running graph or subgraph checks.

To resolve this problem, please try again later or contact your graph admin about upgrading your billing plan.

E035

This error occurs on Windows when a configuration profile has a corrupted API key. Versions of Rover before v0.8.2 used to create corrupted API keys with the rover config auth command.

You will need to recreate the configuration profile in order to proceed. See Rover's configuring docs for more info.

E036

This check error occurs when the build task, operations task, and downstream task (if run) have succeeded or are pending, but some other check task has failed. Please view the check in Apollo Studio at the provided link to see the failure reason. You can read more about client checks here.

E037

This error occurs when a downstream check task fails. This means that you proposed a schema for your source variant that causes checks to fail in blocking downstream variants. You can configure which downstream variants are blocking in the Checks -> Configuration view in Apollo Studio, and you can read more about client checks here.

E038

This error occurs when a supergraph configuration file failed to resolve all of the subgraph schemas.

This error should include information about why the schemas could not be resolved, and include the name of the subgraph that could not be resolved. See the docs for more information on the configuration format.

E039

This error occurs when using a contract command on a non-contract variant.

The variant you're trying to run this operation on isn't a contract variant. Double check the specified graph@variant combination is valid and a contract variant on the Studio variant settings page.

E040

This error occurs when a contract configuration fails to publish.

This error should include information about why the contract configuration could not be successfully published; usually it is due to invalid inputs. You should assume that none of the configuration changes have taken effect unless the error message(s) indicate otherwise.

E041

This error occurs when a new subgraph fails to publish due to a missing --routing-url.

The subgraph you're trying to publish has never been published before, meaning it would be unreachable without specifying a --routing-url. In subsequent publishes, the --routing-url is optional and will default to the previous value.

E042

This error occurs when a schema file has lint rule violations.

The schema you're linting has violated some of the rules configured for your graph. Fix the errors and re-run the lint command to verify the violations have been addressed. See the docs for more information about schema linting.

E043

This error occurs when a build, operation, and/or linter check step fails due to a change in the schema.

Please view the check in Apollo Studio at the provided link to see the failure reason. You can read more about schema checks here.

E044

Offline enterprise license support for Apollo is available on an as-needed basis. It must be enabled on your Studio organization. For access, send a request to your Apollo contact.

E045

The operation failed after reaching the maximum number of retries. This usually indicates a temporary issue with the service. Please try again later, and if the issue persists, contact Apollo support.

E046

This error occurs when Rover can't read, write, or delete a credential in the OS keychain (or its secure file-based fallback).

This may happen if your OS keychain is locked, unavailable, or misconfigured, or if the credential store's on-disk fallback (credentials.json) is corrupted.

Try running rover config auth again to re-save your credential. If this error persists, please open an issue and let us know.

E047

This error occurs when rover graph publish or rover subgraph publish succeeds in publishing the schema, but a launch it triggered — or one of the downstream contract-variant launches it triggered — did not complete successfully.

The publish itself is not affected: your schema was published to the graph registry. See the launch report printed above this error (or, with --format json, the data field) for which launch(es) failed and a link to view them in Apollo Studio.

data's shape matches the invoking command's normal success data — the full publish response, not a launch-specific subset.

E048

This error occurs when Rover can't resolve which release of a plugin (supergraph, router, or apollo-mcp-server) a version request means. Either the plugin registry couldn't be reached, or it has no release matching the request — for example, an exact version such as =2.9.9 that was never published.

Check that the plugin and version in the error are what you meant to ask for, and that the plugin registry is reachable from your machine. If you download plugins from a registry other than Apollo's, make sure --download-host (or the APOLLO_ROVER_DOWNLOAD_HOST environment variable) points at it. Then re-run the command.

If the version was published once and has since been withdrawn, Rover reports E051 instead; run rover explain E051 for details.

E049

This error occurs when Rover chose a release of a plugin (supergraph, router, or apollo-mcp-server) but couldn't download its artifact — for example, because the plugin registry returned an HTTP error, or the transfer was interrupted or timed out.

Re-run the command to retry the download. If it keeps failing, check your connection to the plugin registry. Plugin downloads are large, so on a slow connection you can allow them longer with --client-timeout <SECONDS>. That option replaces the 300-second default for plugin downloads, so pass a value above 300.

E050

This error occurs when Rover downloaded a plugin (supergraph, router, or apollo-mcp-server) but couldn't install it — for example, because the downloaded archive was corrupt, or the install directory named in the error isn't writable or is out of space.

Make sure the install directory is writable and has free space, then reinstall the plugin with rover plugin install <name>@=<version> --force --elv2-license accept. A corrupt archive is downloaded again on reinstall.

E051

This error occurs when a request names an exact release of a plugin (supergraph, router, or apollo-mcp-server) that the plugin registry once served but no longer does — for example, a release that was withdrawn after a defect was found in it.

This is a different error from E048 (no release matches the request), so that a script can tell a version that never existed from one that was taken away. Rover never substitutes a different version on its own.

The error names the plugin, the withdrawn version, and where the request came from (a command-line argument or flag, an environment variable, supergraph.yaml, a rover.yaml manifest, or the plugin-versions.lock that pinned a manifest's floating version). When the registry can say which releases are still available, it also names the newest release in the same major version. Change the request where it was made to that version. If the registry couldn't say, the error suggests a floating version instead, which picks the newest available release.

E052

This error occurs when a plugin manifest, a rover.yaml in a .rover/ directory, exists but can't be used. For example, it isn't UTF-8 text or valid YAML, holds more than one YAML document, or uses YAML merge keys (<<); its plugins section isn't a mapping of plugin name to version; it names a plugin other than supergraph, router, or apollo-mcp-server, declares one twice, or gives one no version; a version isn't one of the accepted forms; or the file can't be read at all. Rover never skips a manifest it can't use or treats it as absent.

It also occurs when a manifest sets install_root, which this version of Rover doesn't support yet. Rather than ignore the setting and install plugins somewhere the manifest didn't ask for, Rover refuses the manifest until the key is removed.

It also occurs when a plugin lockfile, a plugin-versions.lock next to a manifest, exists but can't be used: it isn't UTF-8 text or valid TOML, it has no version, an entry is missing a field or has one Rover doesn't recognize, a plugin is locked more than once, or an entry records a release its own requested version couldn't have resolved to. A lockfile written by a newer version of Rover, in a format this version doesn't read, is refused as well rather than ignored or overwritten; upgrade Rover to use it.

It also occurs when a manifest and the lockfile beside it disagree: the manifest declares a plugin the lockfile doesn't record, or declares a version the release the lockfile records doesn't match. A plugin-using command such as rover supergraph compose fails rather than resolve the declaration afresh, which is what the lockfile exists to prevent. Run the rover plugin install the error names to bring the lockfile up to date. A manifest with no lockfile beside it is not out of date, and resolves normally.

The error names the file and what's wrong with it. Fix or remove the file, then re-run the command.

E053

This error occurs when the Platform API refuses to let you manage an organization's client-credential pairs (rover api-key create <ORGANIZATION_ID> client-credentials, rotate, or delete), or its members' grants.

Managing client-credential pairs requires the organization admin role, and during the initial rollout of client-credential support, the organization must also be enrolled in it. Managing grants across an organization requires the organization's grant-management permission. Contact your organization admin if you believe you should have access.

E054

This error occurs when a setting's value fails its type's syntactic check - for example, a URL setting's value isn't a valid URL (or uses a scheme other than http/https), or a boolean setting's value isn't true or false.

Run rover config set <SETTING> <value> --profile <name> with a corrected value. If the invalid value is already stored on a profile, this also fixes the profile so other commands that read it stop failing.

If the invalid value came from the environment (APOLLO_GRAPH_REF is the one environment variable checked this way), unset it or export a corrected value. If it came from rover.yaml, edit the settings: section.

E055

This error occurs when a command needs a profile's credential, but that profile is known to Rover - for example, it has stored settings from rover config set - and has no credential of its own.

Run rover auth login --profile <name> to authenticate that profile, or set the APOLLO_KEY environment variable to supply a credential without storing one on the profile.

E056

This error occurs when rover api-key list's request for an organization's client-credential pairs failed - a timeout, a server error, or some other failure distinct from the organization simply having no pairs or you not being able to see them.

If API keys were also in scope (the default, or --type included operator/subgraph), they were already fetched successfully and are still shown. If --type named only client-credentials, there is nothing left to show. Either way, try the command again, and if the problem persists, check the Platform API's status.

E057

This error occurs when rover api-key rotate <ORGANIZATION_ID> <CLIENT_ID> is given an ID that isn't a client-credential pair in that organization - nonexistent, belonging to a different organization, or an operator/subgraph API key instead.

rover api-key rotate only rotates client-credential pairs. Use rover api-key list <ORGANIZATION_ID> to confirm the ID, or check that you're targeting the right organization. operator and subgraph keys don't have a rotate equivalent.

E058

This error occurs when Rover needs a plugin that isn't installed, and downloads are disabled. --no-download (or APOLLO_ROVER_NO_DOWNLOAD) disables them for rover plugin install, and --skip-update (or APOLLO_ROVER_SKIP_UPDATE) disables them for the commands that install plugins as they run, such as rover supergraph compose and rover dev. Those commands also don't download a plugin when the APOLLO_ROVER_ALLOW_AUTOMATIC_DOWNLOAD setting is false: in the environment, on a profile, or under settings: in the project's rover.yaml. Rover fails before it contacts the plugin registry, rather than downloading the plugin anyway or using a different version.

The error names the plugin and the version it needed, every directory Rover looked in, and the control that disabled downloads. Install the plugin ahead of time with rover plugin install, or lift that control: re-run without the flag, unset the environment variable, or set APOLLO_ROVER_ALLOW_AUTOMATIC_DOWNLOAD to true. Setting it to true doesn't override --skip-update or --no-download.

E059

This error occurs when rover api-key rename <ORGANIZATION_ID> <ID> <NEW_NAME> is given a client-credential pair's client ID. Client-credential pairs can't be renamed yet, so nothing was changed.

rover api-key rename renames operator and subgraph API keys only. To change a pair's name, create a new pair with rover api-key create <ORGANIZATION_ID> client-credentials <NAME> and delete the old one with rover api-key delete <ORGANIZATION_ID> <CLIENT_ID>.

E060

This error occurs when the settings: section of a project manifest, rover.yaml, names a credential: APOLLO_KEY, APOLLO_CLIENT_ID, or APOLLO_CLIENT_SECRET, in either the canonical or the all-lowercase spelling. A project file is checked into a repository and shared with everyone who clones it, so Rover refuses to read a credential from it rather than ignore the key and leave the secret where it is.

Remove the key from rover.yaml, then authenticate with rover config auth, or set the credential in the environment instead.

E061

This error occurs when the settings: section of a project manifest, rover.yaml, sets the same setting twice, once under its canonical name (for example APOLLO_REGISTRY_URL) and once under that name's all-lowercase form (apollo_registry_url). Both spellings are accepted in a project file, but they name the same setting, so Rover refuses to pick one of the two values.

Remove one of the two keys from rover.yaml, then re-run the command.

E062

This error occurs when rover auth grants revoke --org <ORGANIZATION_ID> --user <USER_ID> --all needs your confirmation before revoking a user's grants, but there's no terminal to ask on - for example in CI, when stdin is redirected, or with --format json. Nothing was revoked.

Pass --confirm to proceed without a prompt.

E063

This error occurs when rover auth grants revoke --org <ORGANIZATION_ID> --user <USER_ID> --all revoked a user's grants under some OAuth clients, but failed under at least one. Rover attempts every client even after one fails, and names each client that failed, along with the Platform API's error for it.

Run the same command again to retry. Revoking under a client where the user no longer holds a grant succeeds, so a retry only changes the clients that failed.

A client the Platform API refused for lack of permission fails again on every retry until you're granted the organization's grant-management permission.

E064

This error occurs when a command asks for Federation 1: a federation_version of 1, latest-0, latest-1 or =0.x in supergraph.yaml, rover plugin install supergraph@1 (or @latest-1, @=0.x), or a Federation 1 template in rover init. Rover no longer composes, installs, or builds against Federation 1.

Migrate your subgraphs to Federation 2 by adding @link directives that opt each one in (see moving to Federation 2), then remove the Federation 1 pin from your configuration, or set it to 2.

E065

This error occurs when rover graph publish or rover subgraph publish published a schema, but the launch it started (and any downstream contract launches) hadn't finished by the time Rover stopped waiting for it. The publish itself went through.

Rover waits for 300 seconds by default. Set APOLLO_CHECKS_TIMEOUT_SECONDS (or pass --checks-timeout) to a higher value to wait longer, or open the launch in GraphOS Studio, whose link Rover prints, to follow its progress there.