Skip to main content

Unified Input

One input bar for every agent, with @file autocomplete, slash commands, voice input, file pasting, and multi-line editing.

Updated
Reviewed

Overview

Every agent terminal in Daintree uses the same input bar. It is a rich text editor with @file autocomplete, /command discovery, file pasting, voice input, multi-line editing, command history, and draft persistence. You type the same way no matter which agent you're talking to. Daintree handles the per-agent differences for you.

@file References

Type @ followed by a filename to get autocomplete across your project. The search indexes Git-tracked files and ranks results by how closely they match what you typed.

Supported Syntax

  • @src/index.ts: reference a file by path
  • @"path with spaces/file.ts": quote paths that contain spaces
  • @'single-quoted.ts': single quotes also work

File references appear as highlighted chips in the input bar, so you can see at a glance which files you're referencing.

Note
The @file text is sent to the agent CLI as-is. Agents that support file references natively, like Claude Code, resolve them automatically. For other agents, the path is a pointer the agent can use to find the file.

Pasting Files from the Clipboard

Copy one or more files in Finder or Explorer and paste into the input bar with Cmd+V. Each file appears as an inline @path chip with a file icon and filename label. Hover the chip to see the full absolute path, or click the × button to remove it.

Pasting multiple files at once works. Each file gets its own chip, inserted consecutively at the cursor. Images are handled separately and appear as image chips with a small thumbnail preview.

You can also drag files from Finder or Explorer straight onto the input bar. The bar highlights during drag-over, and dropping creates the same file chips.

Tip
Cmd+Shift+V pastes clipboard content as plain text, skipping chip rendering. This applies when the input bar has focus. The same key combination toggles voice recording when focus is elsewhere and voice input is configured.

Multi-line Input

Press Shift+Enter or Alt+Enter (Option+Enter on macOS) to insert a newline without submitting. Enter on its own submits the prompt.

The input bar grows as you type, one line at a time, up to roughly 8 lines. After that it scrolls vertically. For longer prompts, press Cmd+Shift+E to open the expanded editor modal, a full-height editing area with no size cap.

Voice Input

When voice input is configured, a microphone icon appears in the input bar. Click it to start recording, or press Cmd+Shift+V when the input bar is not focused. Click again to stop. The transcribed text is inserted straight into the input bar.

While recording, an animated orbit ring plays around the microphone button and the input bar border turns accent-tinted. Live interim text appears in the editor at reduced opacity, then solidifies once confirmed. Text under AI correction shows a dotted underline while it is being processed.

Note
The voice button only shows up once Voice Input is configured in Settings > Voice Input. See Voice Input for setup instructions.

/Slash Commands

Type / at the start of your input to see the available commands. Daintree shows the command list for the active agent.

Agent Commands

Each agent CLI has its own set of built-in slash commands. Common examples include /help, /clear, /compact, /model, and /diff, though the exact set varies by agent. The autocomplete menu shows what's available for the focused agent.

Custom Commands

Daintree finds custom commands on the filesystem, following each agent's conventions:

  • Claude Code: .claude/commands/*.md in your project, or ~/.claude/commands/ globally
  • Gemini CLI: .gemini/commands/*.toml in your project, or ~/.gemini/commands/ globally
  • Codex CLI: .codex/commands/*.md in your project, or ~/.codex/commands/ globally

The daintreehq/commands repo holds a curated set of commands you can clone and copy into your global commands directory. They appear alongside your own custom commands. Currently Claude Code only, with Gemini and Codex support planned.

Custom commands appear in the autocomplete alongside built-in commands, ordered by priority. Project commands override user commands, which override global commands.

Input Adaptation

Daintree adapts how input reaches each agent CLI. You type the same way every time, and Daintree handles the terminal protocol differences:

  • Multi-line pasting: uses bracketed paste mode for agents that support it (Claude Code, Codex CLI), and soft newline sequences for those that don't (Gemini CLI)
  • Line endings: normalized per agent
  • Timing: delays between input and submission are tuned per agent

None of this needs your attention. Type and press Enter.

Command History

Each terminal keeps its own prompt history, up to 100 entries per project and separate from the bulk-operations command palette. Navigate with Arrow Up and Arrow Down. History is deduplicated, so repeating a command doesn't add a second entry.

Press Cmd+R to open the history search palette, a searchable overlay that lets you filter past commands and pick one.

History is scoped per project. Different projects keep separate command histories even when they share the same terminal layout.

Draft Persistence

If you start typing in one terminal and switch to another, your draft is kept. Switch back and the in-progress text is restored exactly as you left it.

Drafts are scoped by both project and terminal. Switch to a different project and return, and the draft you were working on comes back. Nothing is lost when you move between projects.

Input Stash

Press Cmd+Shift+S to stash the current input bar content. An archive icon appears in the input bar whenever a stash exists. Press Cmd+Shift+X to restore the stash back into the input.

Use the stash to set aside a half-written prompt, send something else, then come back to it. Stashes are scoped per project.

Keyboard Shortcuts

Every shortcut below uses Cmd on macOS and Ctrl on Windows and Linux.

ShortcutAction
EnterSubmit prompt
Shift+EnterInsert newline
Alt+EnterInsert newline (Option+Enter on macOS)
Cmd+Shift+EOpen expanded editor modal
Cmd+VPaste (files become chips)
Cmd+Shift+VPaste as plain text when input bar is focused; toggles voice input otherwise
Arrow Up / Arrow DownNavigate command history
Cmd+ROpen history search palette
Cmd+Shift+SStash current input
Cmd+Shift+XRestore stashed input
Ctrl+TabFocus next terminal (cycles grid then dock)
Ctrl+Shift+TabFocus previous terminal
EscapeDismiss autocomplete or close expanded editor

For app-wide shortcuts covering terminal navigation, window management, and more, see Keyboard Shortcuts.