Skip to content

Chat Interface ​

The chat panel is the primary way you communicate with the Vibedata AI agent. This page describes all controls, interaction patterns, and states you will encounter.


Sending a Message ​

  1. Click the chat input area at the bottom of the center panel (placeholder: "Describe your business question...").
    • Press / from anywhere in the application to focus the chat input immediately.
  2. Type your message.
  3. Press Enter to send, or click Send message.
  4. Use Shift+Enter to add a new line without sending.

The chat input expands as you type, then scrolls internally.


Ask about the running release ​

In an Intent you are driving, ask: “Which Vibedata release is this environment running, and where are its release notes?” The build agent returns the running version, its release-notes link and the public releases list, with or without an Intent branch and ephemeral workspace.

On an unstamped build, the version is unknown and there is no version-specific notes link. If release information is unavailable, the agent reports that gap rather than guessing. A release link does not guarantee that an unpublished candidate's notes are already public.

This capability becomes available after your deployment includes the updated agent runtime. Read-only viewer sessions do not run the agent tool.


Attaching Files to a Message ​

You can send supported text, image, and Excel workbook files with a message, or send files without typing any text.

  1. Click Upload file and choose one or more files. Vibedata accepts .txt, .md, .markdown, .json, .xlsx, PNG, JPEG, GIF, WebP, and AVIF files.
  2. To attach a supported file from the clipboard, paste it into the chat input. Pasted images appear with a preview; text, Markdown, JSON, and Excel files appear as filename chips.
  3. Review the attachment chips above the input. Use the remove button on a chip if you do not want to send that file.
  4. Add message text if needed, then click Send message. While a Turn is running, the button shows Stop when the box is empty and toggles to Send message as soon as you type; sending adds the message and files to that Turn, which the agent picks up before the Turn finishes.

Vibedata uploads the complete attachment batch before sending the message. If a file is unsupported, malformed, or cannot be uploaded, Vibedata sends no message and keeps the text and attachment chips available so you can remove a file or retry. Vibedata does not impose its own file-size or attachment-count limit, but browser, deployment, and agent-runtime limits can still cause an upload to fail.

If a message fails to send after its files upload, Vibedata removes it from the queued list above the composer and shows a Message could not be sent — try again. notification. Retype the message and send it again when you are ready.

Attachments belong only to the AgentSession that receives them. Sleeping, restarting, replacing, or reaping that AgentSession removes the files. Conversation replay continues to show the filenames, but those names are not download links and a later AgentSession cannot read the earlier files.

For an .xlsx workbook, the agent can list its worksheets, inspect a worksheet's workbook-recorded bounds, and read an exact inclusive A1 range that you or the agent supplies, such as A2:F100. Each valid workbook action pauses at an Approval Request; select Approve to allow that batch, or Always allow to let future matching actions proceed without another prompt. Recorded bounds are a discovery hint and may include formatted empty cells, so you can provide a more precise range. Every data read requires both a worksheet name and a range. A request over 1,000 rows or 50 columns is rejected instead of truncated; the agent can make additional bounded calls when needed. Range data is normally staged in temporary CSV files to keep it out of the agent's immediate context. The agent can request inline data when the combined serialized values and formulas do not exceed 256 KiB; larger inline results are rejected without truncation and can be retried as CSV. Formula cells include the literal formula and the last value cached by the application that saved the workbook. Vibedata does not evaluate formulas, macros, external links, or external data.


Empty States ​

There are two empty states depending on whether an intent is selected.

Welcome Screen (no intent selected) ​

When no intent is selected and there are no messages, the WelcomeScreen appears with the heading "What would you like to build?" and six suggestion cards. On a Domain's landing page, these are generated for that Domain when available; otherwise (and everywhere else the WelcomeScreen appears) the static set below is shown:

CardBenefit
Initialize the repoSet conventions
Author a new skillExtend agent
Author a reusable commandReuse workflows
Add a data sourceAdd sources
Transform raw dataShape data
Check runtime healthCatch problems

Clicking a card pre-fills the input with a starter prompt for that capability — there is no blank-Intent escape hatch.

New Intent Empty State (intent selected, no messages) ​

When an intent is selected but has no messages yet, the NewIntentEmptyState appears with the heading "Ready when you are" and six quick-start pill buttons: Initialize the repo, Author a new skill, Author a reusable command, Add a data source, Transform raw data and Check runtime health. When the Domain has generated next-step suggestions, those replace the six.

Each pill shows a short capability name; clicking it pre-fills the chat input with that capability's full prompt for this Intent.


Repair session access ​

If session authentication fails, ask the agent to offer Repair session access. The offer appears above the message box, like an MCP connection request. Only the person driving the session can use its repair button.

Select Repair session access and wait for the toast. Session access repaired. means the offer closes. If you see Couldn't repair session access. Try again., the offer stays available so you can try again.

Repair keeps the same running session and its local work, including changes and commits that have not been pushed. It does not retry the failed operation; ask the agent to retry when you are ready. Use Dismiss to hide the offer without repairing anything.

Repairing session access does not reconnect GitHub or change repository permissions. Those failures need the corresponding connection or permission fix.

Reading the conversation and context ​

The dock above the message box holds interactions with you. Questions, connection requests, queued-message notices and action approvals can appear together. When there are many, scroll within the dock; the message box stays reachable. Action approvals appear nearest the message box.

Only one side-channel card is shown at a time. Running /btw, /recap or /build-summary replaces the previous side-channel card, including while the new response loads. Dismissing it does not restore the previous card. These cards use compact Markdown formatting, including headings, lists, emphasis, links and code. Headings stay body-sized so the dock remains compact.

Questions retain Answer, Decline and their countdown. Action approvals retain Approve, Reject and Always allow; they do not expire or offer a notice-only Dismiss.

Dismiss Agent progress ​

The Agent progress panel shows the agent's current task list above the message box. Select Dismiss to hide that list. It stays hidden if you reload the page and reappears when the agent sends a new list or changes its steps. Dismissing the panel does not change the agent's work. A list with unfinished steps may remain visible after the agent finishes and say that it may not reflect the final state; you can dismiss it then. A list whose steps are all completed or skipped hides automatically.

The conversation, the area above the message box and the message box itself share one centered column, 800 pixels wide. When the window is narrower than that, the column fills it. While there is room, opening or closing the sidebar or the right panel only changes the space either side of the column.

The Intent's status (for example running or finished) shows in the top bar, right after the Intent's name. On a read-only Intent the reason follows it. The search icon for finding text in the conversation sits in the same bar, just before the folder icon once the conversation has messages. On a closed or archived Intent, which has no folder icon, it stays at the right of the bar. It is hidden while Docs View or a diff covers the chat. On the Domains and Settings views the bar shows the product name, not an Intent.

Files the agent changed in a turn appear as chips under its reply. The icon says where the file lives and what a click does: a branch icon is a file in the Intent's repository and opens in Code View; a download icon is a temporary file outside the repository and downloads; a scroll icon is generated dbt documentation and opens in Docs View. The folder part of a file's path is dimmed. Only the first four show; +N more shows the rest and Show less hides them again.

Messages appear in tinted bubbles, each with the avatar of the person who sent it: their profile picture, or their initials when their sign-in provider has no picture. When an agent creates another Intent, its initial prompt shows the user who triggered the parent conversation's work. An automation's initial prompt shows the user who owns that automation. These prompts do not count as newly typed messages for sidebar ordering. A message with no recorded sender, including older messages, or from someone who is no longer a member of the Domain shows a neutral person icon. Vibedata's replies appear as plain text with no name above them, with tables, code and expandable activity when applicable. Copy and Fork actions appear when you hover over a message.

The input and its controls share one composer: Upload file, the agent persona, LLM Profile, and Send message or Stop agent. Profile choices apply to the next turn.

The right panel shows Goal, active Subagents, and Context above Usage and Current viewers. Expand or collapse Context independently; its Sources, Files, MCPs enabled, Skills used and Language servers used sections keep their expansion choices when you reopen it. Files lists the private upload-area tree, including files the agent creates there. Browse dbt models and other working-folder files in Code View.

Usage shows cost, current context percentage and current context tokens. Expand Usage for details and scroll that region on a short screen. Current Viewers shows live presence, including who holds the edit lease. These remain available while you scroll the upper panel or collapse Context.

The chat uses the same light or dark appearance selected in your user settings.


Agent and Model Selection ​

The primary agent is selected when an Intent is created. The LLM Profile picker in the chat input bar controls the model and provider credentials used by the next turn.

New Intents inherit the instance default profile unless a profile is selected explicitly. For an existing Intent, selecting another profile updates its binding for the next turn. If the bound profile is deleted, the Intent remains available but Send stays disabled until you select a replacement.

On an opened Closed or Completed Intent, users authorized to update the Intent can select a replacement in LLM Profile. You can then use /btw, /recap, or /build-summary against the retained conversation. Selecting a profile keeps the Intent read-only; it does not enable a new turn.

When an agent successfully switches profiles during a turn, the picker updates to that profile and later turns use it.

Agent identity and external attribution ​

Fresh Intents use Vibedata as the agent's product name. External comments and messages must disclose Vibedata AI authorship. AI-assisted commits credit Vibedata <help@getvibedata.ai> as co-author, preserving configured human git identity; that Vibedata identity is the fallback only when none is configured.

This guidance reaches the default runtime after the separate Agent Server image-pin update merges, not after the source change alone. After your deployment receives that update, start a fresh Intent for the updated guidance. Reopening or Forking an existing Conversation retains its original guidance, and existing commits are not rewritten.


Stopping a Running Task ​

While the agent is streaming:

  • Press Escape at any time to stop generation.
  • Click Stop in the chat input bar.

Both actions cancel the current agent task immediately. Messages already generated are retained.

When a monthly budget is exhausted during an active turn, Vibedata attempts to interrupt the agent and shows Budget exhausted beside the conversation activity. If Vibedata cannot confirm the interruption, the notice says so. The composer also shows Budget exhausted and disables sending until the budget is raised or the next month begins. You can still read the Intent.

Autonomous Goals ​

Use a Goal when you want OpenHands to keep working, audit the result, and continue until the objective is accepted, reaches its iteration cap, or you intervene.

CommandResult
/goal <objective>Starts a Goal in an idle Conversation. If work is already active, Vibedata leaves it unchanged and reports a conflict.
/goal stopAsks OpenHands to stop the outer Goal loop. An in-flight worker may finish before the Goal appears Paused.
/goal resumeResumes the latest paused Goal from retained OpenHands state.

Goal status, objective, progress, and the latest audit verdict appear at the top of the Right Panel. Worker messages and tool activity remain in the transcript; OpenHands' internal continuation and resume prompts appear as Runtime guidance entries in the activity line before them.

Sending an ordinary message or using Stop pauses a running Goal, then follows the ordinary Conversation behavior for that action. A paused Goal never resumes automatically. After a stopped or crashed runtime is opened again, use /goal resume explicitly to continue retained Goal work.

To start a different Goal, stop the current Goal and wait for any in-flight worker to settle, or wait for existing work to finish naturally. Vibedata does not replace active Goal or Conversation work.


Queuing a follow-up message ​

During a running Turn, type a follow-up and select Send message. Each message is sent to the running agent and shown in the dock until pickup is confirmed. You can send multiple messages. After 15 minutes without confirmation, Dismiss hides that message's notice; it does not cancel delivery or remove the message from conversation history.


Persistent Sessions ​

The agent uses persistent streaming sessions — after your first message, subsequent messages in the same intent resume the existing session rather than starting from scratch. This means:

  • Faster responses on follow-up messages (no cold restart per turn).
  • The agent retains full context from earlier turns without re-processing.

MCP Servers When Opening an Intent ​

If Vibedata cannot attach one or more of your configured MCP servers while opening an Intent or restarting its AgentSession, the Conversation remains usable.

  • Opened with some MCP servers unavailable lists the servers Vibedata skipped, such as GitHub or Linear.
  • Opened without some MCP servers appears when Vibedata cannot identify the skipped servers.

Neither notice appears when you have no MCP servers linked or when the installation has no MCP integration set up. In those cases the Intent opens normally with Vibedata's built-in tools and nothing to repair.

To restore those MCP servers:

  1. Open User settings.
  2. Select MCP servers.
  3. Complete or retry the affected server's setup.
  4. Pause the Intent, then open it again.

Reopening a persistent Conversation by itself does not start a new AgentSession. Pause the Intent, then open it again, after changing MCP setup so Vibedata offers the updated server configuration to the replacement AgentSession.

Named deployments of the same MCP server remain distinct in the agent runtime. Unique names become readable tool prefixes, so deployments such as Workspace A and Workspace B expose separate obot-workspace-a and obot-workspace-b tool groups. Vibedata still assigns distinct tool prefixes if names would otherwise collide. Renaming, removing, or disconnecting a deployment does not change the tool set of an AgentSession that is already active. Pause the Intent, then open it again, to use the updated MCP tool set. Connecting a server you had not connected is the exception: see Connecting an MCP Server the Agent Asks For.

Connecting an MCP server the agent asks for ​

A connection request names the server in the dock. The edit-lease holder can select Connect to open User Settings → MCP servers at the matching row. Readers can dismiss the notice. Dismissal and the five-minute timeout affect only your browser's notice; a new request in a later Turn can appear again. Once the server becomes usable, the notice clears and Vibedata shows its connection notification. Ask the agent to retry.

The server's tools can take a few seconds to attach; if the agent still cannot see the tool, ask it to retry again.

If the Conversation already has as many MCP tools as it can hold, the newly connected server stays unavailable for this Conversation, and disconnecting another server does not make room. Start a new Intent to use it.


Background Streaming ​

When you switch away from an Intent that is actively streaming, the agent continues running on the server. When you return, Vibedata uses the Intent's current status to attach to its existing agent session or restore that session first, then replays the complete Conversation so you do not miss output that arrived while you were away.

If the browser event connection is interrupted, Vibedata retries the same connection for a bounded period and resumes from the last durable event it received. This network recovery does not reconnect or restart the agent session. A Leave intent button sits in the header of any selected Intent, including a closed or read-only one. It clears your selection and returns you to the Domain (or Workspace, when none is selected) without pausing the agent, stopping its container, or releasing your Edit Lease — use Pause instead to actually stop the agent and free its runtime. It is always there, not only while something has gone wrong.

When the agent stops for any reason, Vibedata says so in one place: a bar above the view switcher. It stays visible whichever view you are in, so you see it while reading code, a diff, or your published documentation, not only in the conversation. It shows one reason at a time — the one most in your way.

If the browser cannot reconnect to Vibedata, it shows Can’t connect to Vibedata while retrying. You can select Return to Intents immediately. If the recovery window expires, automatic retry stops and the reason stays visible. Select Return to Intents when you are ready; it does not appear on the Domain landing. Select the Intent again when you are ready; Vibedata then uses its current status to choose whether to attach or restore the session.

If Vibedata cannot load conversation events, it shows Conversation stream failed with the reported detail and code. Vibedata cannot confirm whether the agent is still running. Select Return to Intents; selecting the Intent again may show the same error until its cause is resolved. Sending messages and responding to conversation prompts remain unavailable while this alert is shown.

If Vibedata confirms that the agent session stopped, it shows Agent session stopped with the reported cause. For a memory-limit stop, it explains that the current turn was interrupted. It also tells you what the stop cost: each session starts from a fresh copy of your branch, so any work the agent had not pushed is gone, and the message names the branch and commit your next session starts from. Select Start a new session to carry on. Once a session is running again — which a reopen does for you — View branch also appears, and opens that commit's changes; it is not offered while the runtime is gone, because the branch is read through that runtime. Your earlier conversation remains visible; message sending and stale turn controls are unavailable until a new session starts.

If a spending limit is reached, it names the limit and who can raise it. The agent cannot continue until someone does.

If the conversation itself cannot continue — most often because it has grown past the model's context window — it says so and offers Fork from here, which starts a fresh conversation from an earlier point while keeping your branch and your work. Retrying the same conversation cannot succeed, so the composer explains why it is unavailable. You can dismiss this message if you would rather scroll back and pick your own point to fork from; the composer stays unavailable either way.

If a single turn simply failed and can be retried, the message says so and you can dismiss it. Just send your message again — nothing was lost.

If Vibedata automatically returns you because attachment failed, the Intent or Domain is no longer available, its previous owner has not released it, or a message is rejected because the Intent must be reopened, the landing shows that specific failure and any available recovery action or retry time. A failed Pause followed by a disconnected agent session keeps the failure in chat until you select Return to Intents. Normal Pause, Close, Delete, and Archive do not show this error notice.

The Edit Lease is renewed separately while you drive the Intent. If Vibedata can no longer confirm that authority, a persistent banner identifies the reason, such as The edit lease is no longer available, You no longer have permission to drive this Intent, This intent is no longer available, or The edit lease expired. Send and Pause remain unavailable while the banner is shown. Return to the Domain and select the Intent again after resolving the cause. Losing the browser event connection does not by itself change the Edit Lease or restart the agent session.

After you pause an idle Intent and open it again, its status indicator shows Ready. Working means a Turn is running or queued.

The streaming indicator inside the Intent's status indicator shows that the Intent is producing live output in the background. Its tooltip reads Streaming live output…


Toast notifications ​

Vibedata uses distinct colors and icons to show toast notification severity.

  • Toast warnings describe degraded or recoverable conditions. They disappear automatically after a short time.
  • Toast errors mean an operation failed or an outcome is blocked. They remain visible so you can read the cause and recovery guidance. Select Close toast to dismiss an error.

Conversation Errors ​

If a Turn ends with a runtime error, Vibedata keeps a Conversation error entry in the transcript. The available error detail appears in the entry. Select Technical details to inspect diagnostic fields reported by the runtime. If the runtime marks the Conversation as stuck without providing detail, the entry says the agent stopped because it could not make progress.

The entry remains in the Conversation when you leave and reopen the Intent. Diagnostic fields do not add Retry, Settings, or other action controls; they are technical evidence about the failed Turn.


Multi-Question Wizard (QuestionCard) ​

When the agent needs clarification before proceeding, it presents a QuestionCard — a structured wizard that walks you through one question at a time.

How it works ​

  1. The card shows one question at a time. Its header row holds the card's name, the question's chip, a Question N of M counter when the agent asked several questions, and, while the agent is waiting for your reply, a countdown that becomes more urgent as the time runs out.
  2. A question with options shows radio buttons (choose one) or checkboxes (choose all that apply). Every option's description is visible under its title, and the agent's suggested option carries a Recommended badge. The last row is always Other, which opens a free-text field under it.
  3. A question with no options shows a free-text box instead.
  4. Use Back and Next to move between questions. On the last question, Answer replaces Next and submits your answers. Back is not shown on the first question.
  5. In a multi-question wizard, each step also offers Decline (decline this question) and Decline all (decline the whole set). A single-question prompt shows one Decline.
  6. Viewers without the edit lease see the questions read-only, without the answer or decline controls.

A long question scrolls inside the card together with its option rows, while the header and the Answer and Decline controls stay visible, so you can always reach them; a short question keeps the card compact. In a multi-question wizard the header also shows which question you are on. The question text renders as Markdown — bold, links and lists render as written — and each option's title and description renders as inline Markdown, where bold, code and links render inline.

Actions ​

ButtonBehavior
BackReturns to the previous question. Not shown on the first question.
NextMoves to the next question once the current one has an outcome.
AnswerSubmits every answer on the last question. Only enabled when each question has an outcome.
DeclineDeclines the current question without answering it.
Decline allDeclines the whole set and lets the agent continue.

Keyboard shortcuts ​

KeyAction
EnterGo forward — Next, or Answer on the last question — once the current question has an outcome.
Cmd/Ctrl+EnterSubmit from inside a free-text answer; plain Enter adds a line.

For technical details on how the agent decides to ask questions, see Agent Behavior.


Sub-Agent Rows ​

When the agent waits for a background command or sub-agent and receives its final result, that result does not trigger another automatic completion notice. If the wait ends while the work is still running, the result arrives when the work finishes.

When the agent delegates work to a sub-agent, it appears as a row in the activity line of the run of work where it started, in the order it happened, alongside the agent's other calls. Sub-agents the agent starts together form one N calls row that lists them. Each row shows:

ElementDescription
LabelThe sub-agent name and type (e.g. "team-name/agent") with a bot icon
StatusRunning while it works and Failed if it stopped. A finished sub-agent shows only how long it took
BadgesOptional metadata: "parallel" if running in parallel, the model name, and parent context token count
Child itemsNested tool calls, thinking blocks, and further sub-agent rows (up to 3 levels deep)
ResultA "Result" block with the sub-agent's conclusion once it completes

The activity line counts sub-agents beside tool calls and skills. Sub-agent rows are collapsed by default. Open the activity line, then click the row to expand it and see the full activity log.


Message Structure ​

Assistant messages use interleaved rendering: text segments and tool-call groups are displayed in the order they occurred, rather than text-first then tools. The work between two messages sits in one collapsed activity line, described below. A TurnSeparator (centered dot divider) appears between consecutive assistant messages when the previous message had tool calls.

User messages that match the Q&A answer format (**Question**\n> Answer) are rendered as structured QA Answer Cards instead of plain text.

If Vibedata attaches guidance to one of your messages, a collapsed Additional context annotation appears below it. Select Additional context to read the injected guidance; your original message remains separate and unchanged.

Hover over any message, or move keyboard focus onto it, to reveal its Copy button. Eligible user and assistant messages also show Fork from here. While the source is running a turn, Fork from here stays visible but is disabled, with the reason Available when the current turn finishes; wait for the turn to finish before forking. Choose Fork from here to create a new Intent from that point; later messages remain in the source Intent. Forking from an assistant response includes that response in the child. Forking from one of your messages starts the child before it and places its text in the child's composer without sending it, so you can edit and resend it. A Fork dialog shows the progress and cannot be closed while it runs. Fork only creates the child: the new Intent appears in your Intent list when the dialog finishes, and its setup runs when you open it.

On a long-running conversation, Vibedata periodically compacts older history to stay within the model's context window. A compacted message is dimmed and labeled Dropped from context; its Fork from here button stays visible but disabled, since forking from it can no longer succeed. Choose a message that has not been compacted instead. If Fork still fails, Vibedata explains that the message's context was compacted. As in the Intent menu, Fork from here is disabled with the reason Available when the current turn finishes while the source is running a turn.


Activity in the Conversation ​

Each run of the agent's work has one activity line, marked with a gear, in the place it happened: when the agent writes a message and then carries on working, the message sits between two lines. A line counts that run's tool calls, skills, sub-agents and hooks, leaving out any count of zero, and shows how long the work took. A run that only thought reads Thinking. A line shows a status only while the work is Running or when steps failed, with how many. Select the line to open it.

  • One row per step, in order. Inside, the work is listed in the order it happened. Each thought, tool call, skill and sub-agent is its own collapsed row. A call that went well shows how long it took; a call that is still running, failed, was cancelled or lost its result shows that status instead. The calls the agent made together in one step form one row such as 3 calls, and selecting it lists those calls as collapsed rows. Select a row to see a call's input and result. A call heading uses the agent's summary when provided, alongside the tool name. Generic tool details show Input and Output cells with their own copy controls; copying includes the full content even when the visible result is shortened. The agent's background work (async shell, background sub-agent and monitor work) and the messages the runtime sends the agent appear as rows in the same list.
  • Failures stay visible in the status. The activity line stays collapsed until you open it, and every row inside starts collapsed too. A failed call shows Failed on its row, and you open the row to see the error. When a call reports a failure after its tool already produced output, the card shows the failure as the result and keeps that output below it under Replaced tool output. A later successful retry does not hide the earlier failure, and these failures do not end the Conversation.
  • Raw trace. Select Show raw trace at the bottom of an opened activity line to see hook runs and the agent runtime's own records — state changes, recorded statistics snapshots (cumulative cost and token usage), token and model-call logs, and security analysis — in the order they were recorded, each with its event type and raw content. A blocked hook, or a hook that left feedback, reveals its raw trace once you open its activity line. Export trace downloads the Conversation's events. An event type Vibedata does not yet recognise appears on its own as a collapsed Unrecognized event entry with its type and raw content. Recorded statistics remain available after reopening the Conversation. Live streaming text and connect-time full-state snapshots do not appear in the transcript.
  • The system prompt appears as the first entry of the Conversation's first activity line, above your first message, with its tool count and raw content.
  • Runtime guidance is framework guidance sent to the agent. It appears as an entry inside the activity line before it, showing what produced it, its feedback and the raw message, never as one of your messages.

If the agent's previous run stopped unexpectedly and you were not there to see it — your browser was closed, or you were working on something else — the notice is waiting for you the next time you open the Intent, in the same dock above the view switcher. It says what happened to your work, names the branch and the commit it is at, and offers Start a new session and View branch, which opens that commit's changes. Select Dismiss notice to close it; it stays closed for that interruption, and a new interruption raises it again.

If the model provider stops responding during a run, a The model provider isn't responding — attempt 2 of 3 failed, retrying notice shows above the activity indicator. It updates with each retry and clears on its own as soon as the agent's next event appears, whether the call recovered or failed for good. If every attempt fails, the run ends with an error message instead. Select Dismiss notice to hide it for that stall; a later stall shows it again. Each retry also appears as an llm_retry entry under Runtime events in the activity line's trace.

A sub-agent's activity, opened from the Subagents panel, is laid out the same way, and a question a sub-agent asks shows in place in its activity.

Collapsed details remain searchable. The same activity appears after Vibedata reconnects to the Conversation or after you leave and reopen the Intent.


Viewing Artifacts ​

The agent produces files (artifacts) as part of its work — SQL models, YAML configs, Markdown documents, Python scripts, and more. Artifacts appear as inline file links in chat messages.

  1. Click any file link in a chat message to open the Artifact Modal.
  2. The modal shows the file content with syntax highlighting.
  3. Use the header buttons to copy, download, edit, or open in Code View.

See Artifacts for a full description of the Artifact Modal.


Thinking Blocks ​

Reasoning appears in a compact neutral card labelled Thinking inside an activity line. Expand its row to read the Markdown, including headings, lists, links and code. The other activity panels use the same tight spacing; only errors carry an error rule. Status is shown in words beside its indicator.


Reconnecting Banner ​

If the conversation connection drops during streaming, a Reconnecting warning appears above the chat input with a spinning loader. It disappears automatically once the connection is restored and replay completes.

Recovering a Long Conversation ​

When a conversation reaches the selected model's context limit, Vibedata shows Context limit reached. Compacting conversation and retrying… and continues the same message automatically. After recovery, the boundary changes to Context compacted.


Tool Results ​

When the agent uses a tool that returns data, the result appears as a collapsible block in the chat. The following content types are supported:

TypeAppearance
tablePaginated data table with column headers
sqlSQL code block with syntax highlighting
logScrollable log output in monospace font
markdownRendered Markdown content
yamlYAML code block with syntax highlighting
jsonJSON code block with syntax highlighting
textPlain text paragraph
errorRed error message block

Approval Requests ​

When the agent proposes an action that exceeds your configured risk threshold, or whose risk couldn't be classified, Vibedata pauses and shows a single Approval Request card in the chat stream. One card represents the agent's entire pending batch — every action currently waiting on approval — grouped by subject, not one card per action.

Each subject shows:

ElementMeaning
Kind badgeExact command, Command family, or Tool — how narrowly the subject is scoped
Risk badgeLow, Medium, High, or Unknown, colored and iconed by severity
LabelThe command or tool the subject represents
×N countShown when more than one proposed action maps to the same subject; lists each action underneath
"Already covered"Shown when an existing always-allow grant already matches this subject

If your confirmation settings changed after the request was created, the card shows an italic notice that it was evaluated against your earlier settings.

Command-family grants apply only to Vibedata's documented command shape. For example, a normal git push grant requires an explicit remote and refspec and does not cover configuration-driven, force, delete, mirror, or prune pushes; those remain separate exact-command approvals. GitHub CLI commands remain exact-command approvals.

Three actions are available:

  • Approve — approves this batch only. The next matching action pauses again.
  • Always allow — approves this batch and creates an always-allow grant for every subject not already covered, so matching actions skip approval from then on, at any risk level, until you remove the grant.
  • Reject — opens an inline, optional reason field with Confirm reject / Cancel.

Manage or revoke always-allow grants from Settings → Action confirmation → Always-allowed actions.


Chat States ​

StateWhat you see
Welcome screenCentered heading "What would you like to build?" + six suggestion cards (no intent selected)
New intent emptyCentered heading "Ready when you are" + six grounded quick-start buttons (intent selected, no messages)
Sub-agent runningCollapsed sub-agent row showing Running; expand to see live activity
StreamingTyping indicator (three animated dots), Stop button, Queue button
ThinkingNeutral card labelled Thinking with a live activity indicator
Error bannerError notice above input with its message and available recovery actions
Model unavailableWarning: “Model unavailable; select another profile.” Send remains disabled until you select an LLM Profile.
ReconnectingWarning notice with spinner: "Reconnecting..."
Background streamingNotice: "Agent is processing in the background..." with Cancel button
Scroll-to-bottom buttonFloating button when you scroll up in a long conversation

Quick Reference: Chat Controls ​

ControlLocationAction
Chat inputBottom centerType your message
/ keyAnywhere in appFocus the chat input
Send button (arrow up)Bottom right of inputSend message
Stop button (red square)Bottom right (streaming)Stop the agent
Queue button (list-plus)Bottom right (streaming)Queue a follow-up message
LightbulbBottom left of inputNon-functional placeholder
LLM Profile pickerBottom left of inputSelect the profile used by the next turn
Escape keyAnywhereStop the streaming agent
EnterInput focusedSend message
Shift+EnterInput focusedInsert a new line
Copy buttonMessage hoverCopy message text to clipboard
Search conversationTop bar, before the folder iconFind text in the conversation, including collapsed activity
Fork from here buttonEligible message hoverCreate a new Intent from that message's Conversation boundary (disabled while the source turn runs)
Regenerate buttonAssistant message hoverRe-run the last assistant response
Scroll-to-bottomFloating (scrolled up)Jump to latest messages

Above the composer ​

The space directly above the composer shows one thing at a time. A question from the agent comes first, then messages waiting to be sent to the agent, then a BTW answer, a Suggested next step, Recap, or Build summary card, then the agent's Agent progress list. When the item shown clears — you answer the question, a queued message is sent, or you dismiss a card — the next one appears.

Recap briefing card ​

Type /recap in the conversation composer to get a compact Markdown briefing of at most 50 words, with body-sized headings and lists. It covers work since the current AgentSession opened and emphasizes one recap, insight, or recommendation; recommendations may also show a priority. The compact Recap card, marked Not saved, is never added to conversation history and disappears on refresh.

Manual recap works whenever the Intent has an open Conversation, including a terminal Intent opened read-only. During an active Turn, Vibedata also requests one automatically after three minutes without keyboard, pointer, scroll, composer, or return-to-tab interaction. Agent activity does not restart that clock; finishing, failing, pausing, or cancelling the Turn stops it. An automatic recap that cannot be produced shows no card, so a background failure never interrupts you; type /recap to request one on demand. Cards and viewed state are not saved, and /recap always requests a fresh snapshot on demand.

Build Summary card ​

Type /build-summary in the conversation composer when you want a structured account of what was built, the design and architecture, validation evidence, and work attributable to the current AgentSession. Vibedata reads the complete Conversation but does not run tools, add a message, change the workspace, or save the card. Manual requests show a point-in-time Snapshot and also work for an opened read-only Conversation.

During an active Turn, Vibedata requests the first Build Summary after 15 minutes and checks again every 15 minutes. Keyboard, pointer, and composer activity do not reset this timer. If no new Conversation event has arrived, Vibedata keeps the existing card without another generation request. A new result replaces the previous card. When the Turn finishes or fails, a still-visible card refreshes once as a Snapshot with the terminal evidence, then automatic requests stop. Pausing or cancelling stops the timer without requesting another summary. Dismissing the card prevents a final refresh, including while Vibedata reconnects to the same Turn.

The Build summary card, marked Not saved, follows the same inline treatment as BTW and Recap. Its compact view shows a synopsis and up to three rows from Built, Design, and Validation. Select Show all to inspect every non-empty evidence group, including Current session and Architecture; select Show less to collapse it again. Automatic cards are labeled In progress, while manual cards are labeled Snapshot. In a chat window narrower than 400 pixels the inline card hides that label so the card title stays readable; full screen still shows it. Select Dismiss build summary to hide the card. The whole inline card, including its header and controls, takes at most one third of the chat window; short content stays compact. When the chat window is at least 540 pixels tall, details scroll inside the card, leaving the header, Show less, conversation, and composer reachable. In a shorter chat window the card keeps Copy build summary and Expand build summary to full screen in its header, with Dismiss at the left of its footer; open full screen to read the evidence. If you were using the keyboard in the details or in a failure message when the chat window shrinks, focus moves to Expand build summary to full screen. Select Expand build summary to full screen to read every non-empty group in a view that covers the app. Press Escape or select Collapse to return with the inline card still expanded or collapsed as you left it. Evidence through, when shown, is the timestamp of the last Conversation event included in the summary, not when the summary was generated. It is omitted when that event's timestamp is unknown. Select Copy build summary in either view to copy the complete synopsis, every non-empty evidence group, and the evidence timestamp when known.

While a summary is being prepared, the card header shows Preparing…. A failed manual /build-summary shows Failed in the header and an error message so you can retry; in a chat window shorter than 400 pixels, select Expand build summary to full screen to read the message. Failed automatic or final refreshes show no error card and keep the last successful summary unchanged; if no card is visible, none appears.

Suggested next step card ​

Vibedata can surface a Suggested next step card above the composer when one step clearly follows from the conversation. The card names the step, gives a one-line reason, and offers a single action button. There are three kinds of step:

  • Start this recipe proposes a published Recipe that matches the work.
  • Use this skill proposes a Skill the conversation already has.
  • Install this skill proposes a Skill published in Vibedata's Skill Library that this conversation does not have yet. Vibedata never proposes one that is already loaded or already used.

Every button does the same thing: it writes a message into the composer, below any unsent draft, and places the caret at the end. Nothing is sent until you press Enter, so you can add context first. Choosing Install this skill fills the composer with a request to install that named Skill from vibedata-official before using it. The agent confirms with you before writing anything into the repository, and the added files become ordinary project content under .agents/skills/<name>/ — reviewed and merged like any other change.

The agent can search the library and open an entry it finds, so it answers from the published Skill and the exact revision it came from. The install request still only fills the composer, and the agent confirms with you before writing the Skill into the repository as project content.

Type /insights to ask for a card on demand. During an active Turn Vibedata also asks for one automatically after three minutes without keyboard, pointer, scroll, composer, or return-to-tab interaction, and falls back to a Recap card when no single step stands out. A successful fallback shows the Recap; if the Recap has nothing to show either, no new card appears and any earlier card stays unchanged. The card shows when it was produced, where that time is known, and is not saved to the conversation; dismiss it to clear it.

Manual /btw, /recap, and /insights requests also show errors when generation fails. For /insights, missing or invalid output is a failure, not No strong next step right now; that empty state means a valid assessment found no unambiguous next step. Automatic Insights may fall back to Recap, but neither failure shows an error card.