Skip to main content

Overview

When you let an AI agent (Claude Code, Cursor, the Qovery Agent Skill, etc.) interact with your infrastructure, you want it to investigate freely but never mutate or leak anything. Approving each generated command one by one creates decision fatigue, and a single misread curl or qovery api ... --method DELETE can exfiltrate data or change production state.
The classifications and the permission template on this page are a recommendation, not an absolute rule - adapt them to suit your team’s needs. In all cases, these guardrails sit on top of the permissions granted by the token used to authenticate: a command can never do more than the token allows, so a read-only token remains your strongest safeguard regardless of what the allowlist contains.
This page describes the recommended ways to give an agent a safe, read-only footprint:
  1. MCP Server in read-only mode - the native, recommended option. No allowlist to maintain.
  2. A CLI permission allowlist - for agents driving the qovery CLI directly (e.g. Claude Code with the Qovery Agent Skill).
  3. An API Policy Token - enforced by Qovery rather than by the agent’s own configuration.
These approaches complement each other. The MCP Server is the simplest guardrail; the CLI allowlist is for workflows where the agent runs qovery commands in a shell; an API Policy Token constrains the credential itself, so it holds no matter which client the agent uses.

Option 1 - MCP Server (read-only)

The Qovery MCP Server is read-only by default. It can query and list resources but cannot deploy, update, or delete anything unless you explicitly opt into write mode with read_write=true.
For an extra layer, generate a read-only API token in the Console (Settings > API Tokens) and pass it to the MCP Server. Even if write mode were requested, the token’s permissions would block any destructive action.
Enable write mode only when needed. Prefer read-only mode to limit the blast radius of unintended AI actions.

Option 2 - CLI permission allowlist

If your agent drives the qovery CLI directly, you can constrain it at the tool-permission level. The example below is a Claude Code .claude/settings.json that you can commit to your repo and share across your team. The policy follows three tiers:
The Bash(...:*) syntax is Claude Code’s current permission format. Other agents use their own permission files but follow the same allow / ask / deny model - adapt the command patterns accordingly.

Why qovery api is in ask, not allow

qovery api is a raw passthrough to the Qovery API. It defaults to GET, but it switches to POST as soon as you pass --field or --input, and it accepts --method DELETE / PUT / PATCH. It can also reach endpoints that return secrets. Because permission patterns are glob-based (not regex with negation), there is no clean way to allow “qovery api in GET only.” The safe compromise is to ask for every qovery api call and deny the explicitly mutating method flags as a backstop.

Option 3 - API Policy Token (Beta)

The two options above are enforced on the agent’s side: they depend on the agent using the MCP Server, or on its permission file being respected. An API Policy Token is enforced by Qovery instead. The token carries no role - it carries an Open Policy Agent (rego) policy that Qovery evaluates on every API request made with it, whatever client sends it. That makes it the right tool when the constraint has to hold regardless of the agent’s own configuration, or when it is finer than “read-only”:
A policy token is only as narrow as its policy: it authenticates as organization-admin and the policy is the sole constraint, so a policy that allows everything grants everything. Only an organization owner or admin can create one.
See API Policy Token for the full input contract, more policy recipes, and the Beta limitations.

Command reference

Safe (read-only)

These only read and display data. They never return secret values - environment-variable and secret commands return names only.

Confirm before running

Never run

API endpoints that return secrets

Even though they are GET requests, these endpoints return credentials in clear text. Block them in any read-only setup (they are covered by the qovery api rules above, but list them explicitly if you allow curl):
Secret values are never returned by standard env list commands or service endpoints - but tokens and cloud credentials are returned by the endpoints above and by qovery token. Keep those in the deny list.

Best practices

1

Prefer read-only mode end to end

Use the MCP Server in its default read-only mode, and/or back the agent with a read-only API token created in Settings > API Tokens. When read-only is not granular enough, or the guardrail must not depend on the agent’s own configuration, use an API Policy Token.
2

Commit the permission policy

Check the .claude/settings.json (or equivalent) into your repository so the whole team inherits the same guardrails.
3

Keep secrets out of logs

qovery log is safe to allow, but logs reflect whatever your application writes. Avoid logging PII or credentials in the first place.
4

Review the deny list when the CLI updates

New mutating commands may be added over time. The verb-based deny patterns (deploy, delete, etc.) cover most cases, but review periodically.

MCP Server

Connect any MCP-compatible client in read-only mode.

Qovery Agent Skill

Deploy and manage from your AI coding tool.

API Policy Token (Beta)

Constrain a token with a policy evaluated on every API request.