# Agent approvals and run controls

URL: https://getflowing.ai/docs/ai/agent-controls

Choose how often GetFlowing's agent asks before it acts, answer the actions it holds for you, and stop or carry on a piece of work.

You decide how much the agent does on its own. It asks before the actions you choose, and you can stop its work at any time.

## How often it asks

Each app has a setting for how often the agent stops to ask. In the app's **Settings**, under **General**, find **Agent approvals** and choose a **Code action approvals** setting. Only an owner or admin can change it.

| Setting | What the agent does |
| --- | --- |
| **Ask for risky changes** (the default) | Asks before risky changes: a dependency change, a database migration, a build or deployment change, deleting an existing file, or an action it cannot fully read. |
| **Ask before every action** | Asks before each action, except reading files. |
| **Approve everything** | New runs do not stop to ask. A change that goes out as a pull request is not held at the end either, so review the pull request before you merge it. Changes to CI workflows, and changes made straight to your main branch, are still reviewed. |

You can also set it from the app's chat, where choosing **Approve everything** asks you to confirm first.

Deploys of a released app still wait for approval where your workspace asks before each one, whatever this setting says. See [Approvals](https://getflowing.ai/docs/deploy/approvals).

## Answering a held action

When the agent asks, the chat shows what it wants to do, such as **Run this command?** or **Change these files?**, and why it is asking. Answer **Yes**, or **No, and tell the agent what to do instead**. For a command, **Yes, and don't ask again for this command in this run** saves you being asked again.

Requests to deploy, release or roll back wait in the **Inbox**, under **Approvals**, where each card has **What exactly will happen?** and **Approve** or **Reject**. If you are an owner or admin, you can also type "approve" or "reject" in the app's chat to answer a request, when it is the only one waiting for that app and the latest message in the chat.

## Stop the agent

While the agent is working, choose **Stop** in the app's chat, or on the run's page. It winds down and pushes nothing new, and it opens no pull request. Anything it had already pushed stays where it landed, and pull requests already merged stay merged.

While a run is going, the chat shows its status, **Working**, **Waiting for your answer**, **Waiting for your approval** or **Paused**, with **Pause** and **Resume** beside it.

## Unfinished work

If a run stops before it finishes, its work is saved. Ask the agent to carry on in the chat, or choose **Carry on** where it offers it. If it was part way through a change, it asks whether to **Save to a branch** or **Discard** it. A saved change goes on a branch of its own, never on your main branch.

## Following a run

Every piece of work is a run. A reply in the chat links to it with **Open run**. Its page shows your request, its status, and each step it took. The **Agent console**, opened from **Home** with **Open console**, lists your recent runs and what needs your approval.

## What the agent never does

- Approve its own actions, or anything it has asked you for.
- Change how it asks, or answer an approval, on its own behalf.
- Change billing, members, variables, secrets or domains.

If the agent misunderstands you, choose **Not what I asked** under its reply. The GetFlowing team reviews these to improve the agent.
