Skip to main content

Security Controls

Nova reaches other services for you: MCP servers you add, their sign-in services, Datadog, and public Helm chart repositories. Each of those addresses comes from a person or from another server, so Nova checks it before it connects. This page says what Nova refuses, what you see when it does, and how to fix it.

All of these controls are always on in Nova Cloud. You cannot turn them off, and you do not need to set anything up for them.

What Nova will not connect to​

Nova reaches only public https:// services on your behalf, and checks every address before it connects:

  • Public addresses only. Private, loopback, link-local (cloud metadata services included) and reserved addresses are refused, for every address a name resolves to, each time Nova connects. A name that later points somewhere private is refused then.
  • No credentials in a URL. An address with a user name or password in it is refused; use the server's authentication setting.
  • Redirects are checked too. Each redirect is checked like the first address, and your credentials and headers are never sent on to a different site.
  • Header names are checked. Headers that control routing, proxies, cookies or cloud metadata cannot be set.

These checks apply to custom MCP servers and every address their sign-in uses, to Datadog, and to the Helm skill's chart repositories. They are always on, and you do not need to set anything up.

Plan gates​

Some skills are Enterprise features. Nova checks your plan in the organization you are working in, on the server, every time:

What you doPlan neededChecked when
Add, change, test or remove a custom MCP server, discover its tools, or connect it with OAuthEnterpriseEvery request
Connect a skill from the catalog, or update its connectionThe plan the skill lists (for example, Datadog needs Enterprise)When you connect or update it
Use a skill's toolsThe plan the skill listsWhen Nova loads your skills

If Nova cannot read your plan for a moment, it refuses with a request to try again rather than guessing.

The Helm skill​

The Helm skill finds public charts and shows their metadata, values and rendered manifests. It is limited to that:

  • Public sources only. A chart repository, or a chart given as an address, must be https:// or oci:// and pass the address checks above. Otherwise a chart is a plain name, such as nginx or bitnami/nginx. A file path is refused.
  • Only the arguments the tool declares. Nova refuses any argument a tool does not list. A values file Nova uses is one it wrote itself for that run.
  • Nothing of Nova's. Helm runs without any of Nova's credentials or settings.
  • Files stay in their folder. When Nova checks a chart it wrote with you, every file stays inside that chart's own temporary folder. Absolute paths and .. are refused.

Signing in to a service (OAuth)​

When you connect Slack, Datadog or a custom MCP server with OAuth, Nova signs the sign-in request so that only the request it started can complete. In Nova Cloud the signing key is managed for you. If it is ever missing, Nova does not start the sign-in at all rather than use a weaker key.

When a sign-in fails, Nova tells you which step failed in its own words. What the other service answered is kept in Nova's logs and is not shown in the browser.

Error codes and how to debug a refusal​

Each refusal has a code. Find the code or message you see, then follow the fix.

Address refusals (EGRESS_BLOCKED)​

A connection test shows the code EGRESS_BLOCKED, and a sign-in or chat answer shows one of these messages:

The address host is private or reserved, so Nova will not connect to it.
Cause
The host, or one address its name resolves to, is in a refused range, or a redirect led there.
Fix
Use the server's public address. Check that every DNS record for the name is public, including IPv6 (AAAA) records.
Nova will not connect to host over that protocol.
Cause
The address, or a redirect, is not https:// (for Helm, not https:// or oci://).
Fix
Use the https:// address. If the server redirects to http://, fix the redirect on the server.
The address for host carries credentials, so Nova will not connect to it.
Cause
The URL contains user:password@.
Fix
Remove them from the URL and use the server's authentication setting instead.
host redirected more than 3 times, so Nova stopped.
Cause
A redirect loop, or a long chain.
Fix
Use the final address directly.
Nova will not send the header name.
Cause
A header you set has a refused name.
Fix
Rename the header. Most servers accept the API key in X-API-Key or Authorization.
value is not a valid address.
Cause
The URL could not be read.
Fix
Check the URL for typos.

Header names (header_name_not_allowed)​

Adding or changing a custom MCP server fails validation with the reason header_name_not_allowed and the message "Nova does not send the header name". Choose a different name for the API key header or the connection header; most servers accept the key in X-API-Key or Authorization.

Server address rules when you add a server​

Adding a custom MCP server fails validation with one of: HTTPS required, Private IP, Blocked host, No credentials in URL, or URL cannot contain a placeholder. Use a public https:// address without credentials or ${...} placeholders.

Connection test codes​

The connection test when you add a custom MCP server answers with one of these codes. The message is always Nova's own sentence; what the server answered is not shown.

CodeWhat to check
AUTH_FAILEDThe API key or token is wrong or expired. Paste a fresh one, or reconnect with OAuth.
ACCESS_DENIEDThe credential works but lacks permission. Check its scopes on the server.
TIMEOUTThe server did not answer in time. Check that it is up and reachable from the internet.
CONNECTION_REFUSEDNothing is listening at that address and port.
HOST_NOT_FOUNDThe name does not resolve. Check the spelling and the DNS record.
EGRESS_BLOCKEDSee Address refusals.
CONNECTION_ERRORAnything else, most often a URL that is not an MCP Streamable HTTP endpoint. Check the endpoint path (often /mcp).

OAuth sign-in reasons​

A failed Connect with OAuth shows a message and one of these reasons:

url_refused
Fix
The server address failed the address checks. Use its public https:// address.
no_metadata
Fix
The server does not publish OAuth metadata. Use an API key or bearer token if it supports one.
registration_unsupported
Fix
The server needs a client registered by hand, which Nova cannot do. Use another authentication mode.
registration_failed
Fix
The server's sign-in service refused to register Nova. Try again; if it persists, check the server's OAuth settings.
session_expired
Fix
The sign-in took too long or was already used. Start connecting again.
token_exchange_failed
Fix
The sign-in service did not issue a token. Start connecting again.
EGRESS_BLOCKED
Fix
An address in the sign-in flow is refused. See Address refusals.

If Connect for Slack or Datadog fails with "Failed to start OAuth flow" every time, the sign-in signing key may be missing. Contact support; nothing on your side needs to change.

Helm (HELM_SOURCE_REFUSED)​

Nova reports HELM_SOURCE_REFUSED with the reason. Use a public https:// or oci:// repository and give the chart as a plain name.

File paths (FILE_PATH_REFUSED)​

Nova writes the files of a chart, module or manifest set into a private folder before it checks them, and refuses any path that could land outside it. A generated artifact shows the reason under its failed checks; the Helm skill reports FILE_PATH_REFUSED with it.

File paths must stay inside their folder; ".." is not allowed.
Fix
Give every file a relative path inside the artifact, such as templates/deployment.yaml. Absolute paths, backslashes and a path that names no file are refused the same way.
"path" is listed twice; give each file once.
Fix
Keep one copy of the file.
"path" needs a name another file already uses as a file or a folder; give each its own name.
Fix
Rename one of them: a and a/b.yaml cannot both exist.

Plan (requires_upgrade, plan_unavailable)​

CodeStatusMeaningFix
requires_upgrade403Your plan in this organization does not include this skill or feature. The message names the plan it needs.Upgrade the organization, or switch to an organization on that plan.
plan_unavailable503Nova could not read your plan just now.Try again in a moment.

Next​