> ## Documentation Index
> Fetch the complete documentation index at: https://docs.os.meetluno.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Chat with agents

> Run a deployed agent from its page in the web app — streaming replies, approvals, sessions, modes and models, signals.

Every deployed agent has a chat on its page: builders open **Agents** in Studio and select the agent; everyone else opens it from its Space in the [User view](https://docs.os.meetluno.ai/learn/web-app/user-view.md#spaces) (`/spaces/<space>/agents/<agent>`) or picks it in the [chat dock](https://docs.os.meetluno.ai/learn/web-app/chat.md#chat-dock). Type into the composer. This chat **runs** the agent you built. To build or change agents, use [Luno Builder](https://docs.os.meetluno.ai/learn/web-app/chat.md) instead.

You need the project's run permission to send messages; without it the composer is read-only.

## Sessions

Each conversation is an agent session — the same session you see in [Runs](https://docs.os.meetluno.ai/learn/logs/agent-runs.md), the CLI and the API.

* **New chat**: the agent page opens on a fresh composer with **Recent chats** and upcoming **Triggers** below it. Your first message starts a session.
* **Resume**: open any session from **Recent chats** or the history rail on the right and keep typing — the agent continues with the full conversation. Sessions started elsewhere (Slack, a trigger, the API) open the same way.
* **Share**: the URL carries the session (`?sessionId=...`), so a teammate with access to the project opens the same conversation. Only the session's owner or a project admin (the project **Admin** role, or an org owner/admin) can keep typing in it or approve its tool calls (unless the tool names you as an approver); for anyone else the composer is disabled and approval cards show who may decide. A link to a session that no longer exists, or that you can't access, says so instead of showing an empty chat.

## Streaming

Replies stream token by token. While the agent works, its thinking and tool calls show as a live trace that collapses into **Worked for N seconds** (or **Thought for…**) once the answer lands; expand it to see each tool's arguments and result. **Stop** cancels the run.

Runs are queued and survive the page: reload, close the tab or open the session on another device mid-run and the chat reattaches to the live stream from the start of the turn. If the run already finished, you see its result.

## Tool approvals

When the agent calls an action or tool marked [`needsApproval`](https://docs.os.meetluno.ai/learn/agents/build-agents#human-approval), the run pauses and an approval card appears in the transcript with the tool and its input. **Approve** runs it; **Deny** takes an optional reason that reaches the model. Once every pending call is decided, the agent resumes and the chat follows the continuation live. If someone already decided the call (in Slack, the CLI or another tab), the chat tells you. For tools marked [`editable`](https://docs.os.meetluno.ai/learn/agents/build-agents#edit-before-approving), **Edit** opens the input as JSON; **Approve with edits** sends it (the server checks it against the tool's input schema). When a reply paused on several calls you may decide, check the ones you want (or **Select all**) and use **Approve selected** / **Reject selected**: one all-or-nothing decision, and the agent resumes once.

## Modes and models

The composer shows a **model** picker for every agent and a **mode** picker for agents that declare [modes](https://docs.os.meetluno.ai/learn/agents/build-agents.md#modes).

* The mode applies to each prompt you send; the session remembers the last one, so a resumed chat starts in the mode it was left in.
* The model is a [per-prompt override](https://docs.os.meetluno.ai/learn/agents/build-agents.md#per-prompt-model) — it defaults to the mode's or the agent's model, and the one you pick on a new chat carries into its follow-ups. **Add models** chooses which of your organization's chat models (Governance → Models and Chat models) the menu lists.

## Structured output

When a run used an [`outputSchema`](https://docs.os.meetluno.ai/learn/agents/build-agents#structured-output) (from a workflow, a trigger or the API), its reply shows the validated result as a **Structured output** card — fields, lists and nested records — instead of a raw JSON blob. **JSON** switches the card to the raw value; copying the reply copies the JSON.

## Signals and background results

[Signals](https://docs.os.meetluno.ai/learn/agents/build-agents.md#signals-messages-into-a-running-conversation) — trigger events delivered into a session, [background task](https://docs.os.meetluno.ai/learn/agents/build-agents.md#background-tasks) results, messages from other systems — show up in an open chat without a reload:

* A signal that wakes an idle session starts a new turn; the open chat picks it up within about 15 seconds and streams the reply live.
* Signals the agent received while it was already working (`inject` mode) are listed under **Received while working** in that reply.

## Errors

A failed run shows its error under the last message — also after a reload — with **Retry**, which sends the last prompt again in the same session. Errors from the server (an unknown model or mode, a missing permission) appear as readable messages, in your language when the API gives a known error code.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.