Unified Input
One input bar for every agent, with @file autocomplete, slash commands, voice input, file pasting, and multi-line editing.
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.
@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.
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.
/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/*.mdin your project, or~/.claude/commands/globally - Gemini CLI:
.gemini/commands/*.tomlin your project, or~/.gemini/commands/globally - Codex CLI:
.codex/commands/*.mdin 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.
| Shortcut | Action |
|---|---|
| Enter | Submit prompt |
| Shift+Enter | Insert newline |
| Alt+Enter | Insert newline (Option+Enter on macOS) |
| Cmd+Shift+E | Open expanded editor modal |
| Cmd+V | Paste (files become chips) |
| Cmd+Shift+V | Paste as plain text when input bar is focused; toggles voice input otherwise |
| Arrow Up / Arrow Down | Navigate command history |
| Cmd+R | Open history search palette |
| Cmd+Shift+S | Stash current input |
| Cmd+Shift+X | Restore stashed input |
| Ctrl+Tab | Focus next terminal (cycles grid then dock) |
| Ctrl+Shift+Tab | Focus previous terminal |
| Escape | Dismiss autocomplete or close expanded editor |
For app-wide shortcuts covering terminal navigation, window management, and more, see Keyboard Shortcuts.