# Coding agents

> Which coding agents PrismaLens drives, such as Claude Code, Codex, OpenCode and Gemini CLI, how one signs in, and what it may do during a run.

PrismaLens doesn’t include a model or an agent. It drives a coding agent on your machine over the [Agent Client Protocol](https://agentclientprotocol.com) (ACP), the way an editor does, and that agent does the reading and the reasoning.

## Supported agents

OpenCode, Claude Code, Codex, Gemini CLI and deepagents work out of the box. Other ACP agents can be added from the ACP registry, or as a local command, in **Settings → Agent → Add agent**.

## Which one runs

1. `PRISMALENS_HARNESS`, if set when `pl up` starts, pins one, for example `PRISMALENS_HARNESS=claude-code pl up`.
2. Otherwise, the agent chosen in **Settings → Agent**.
3. Otherwise, the first agent that can run, in the order listed above.

## Signing in

The agent uses its own sign-in, as it does in your terminal. You can also enter an API key in **Add agent**. PrismaLens stores that key encrypted and never shows it again. It never reads or stores the agent’s own login.

## What the agent may do

You pick one of four permission levels. Each selects the agent’s own mode and decides which of its requests wait for you:

| Level                    | What it means                                                             |
| ------------------------ | ------------------------------------------------------------------------- |
| **Ask always** (default) | Reads and searches run; every other request waits for your approval.      |
| **Auto-accept edits**    | Reads and file changes are approved; every other request waits for you.   |
| **Auto**                 | Runs the agent’s own review mode where it has one; requests are approved. |
| **Full access**          | Every request is approved. The agent can do anything your user can.       |

A run you start uses Ask always unless Settings or the agent’s own configuration sets another level, so check both before you rely on approvals. A run started by an alert has nobody to ask. It runs at **Auto** and refuses anything the agent asks. PrismaLens adds no sandbox. See [What PrismaLens reads](/trust/).