Using the TUI
Colours, Markdown Streaming and Scrollback
fast-agent streams reasoning, assistant responses and tool calls to the console, rendering markdown while protecting the scrollback buffer.
ANSI colours are used throughout to match your existing preferences. OSC133 and prominent final response markers are used to assist scrollback navigation.
The apply_patch tool (supplied, and exposed by default to > GPT-5.2 models) has highlighting applied during streaming.
Tools can be labelled as generating python code for syntax highlighting (especially useful when integrating with Pydantic Monty)
Shell Integration
You can run a shell command with ! - for example ! git status. You can enter an interactive shell by typing ! Enter. Child shells get FAST_AGENT_SHELL_CHILD=1. Type exit to return to fast-agent.
File names and paths can be automatically completed with either Tab or Ctrl+Space.
File Previews
When the internal read_text_file tool is used, by default 5 lines of the file are displayed. Adjust this with shell_execution.output_display_lines, SHELL_EXECUTION__OUTPUT_DISPLAY_LINES, or fast-agent config shell.
Use /history detail to review the full contents of a turn and tool calls.
Image Viewer
Images received from the Assistant or tool calls are rendered to the console on the final turn. Local images that you attach to a user message are previewed in the user panel beneath the attachment link text.
Recording format
The image in this asciinema capture uses halfblock rendering so it can be recorded as plain terminal cells. In a real terminal, fast-agent can use higher-resolution terminal image protocols when your terminal supports them.
The image-generation recording was captured with terminal image rendering enabled and the halfcell backend, so asciinema can replay ANSI/Unicode cells instead of terminal-specific image protocols. The Markdown image link and source URL remain visible in the recording as a fallback.
Paste and Attach Images / Documents
You can attach images and documents using /attach or by using the ^<uri|file> syntax. The indicator in the status bar shows a count of attachments, and is green if they are found, red if there is an error. Press F10 to clear all attachments.
You can paste images directly with Alt+V. In terminals that reserve that chord, Ctrl+Alt+V is also bound.
Local image attachments, including pasted clipboard images, are displayed inline after your message when terminal image rendering is enabled. Remote image URLs remain as links.
Model Feature Toggles
Use the function keys in the prompt to cycle model-specific runtime features:
| Key | Action |
|---|---|
| F6 | Cycle reasoning effort |
| F7 | Cycle text verbosity |
| F8 | Toggle or cycle web search |
| F9 | Toggle or cycle web fetch |
These toggles apply when the selected model/provider supports the feature.
Prompt Shortcuts
| Key | Action |
|---|---|
| Ctrl+Enter | Submit in multiline mode |
| Ctrl+Space | Open completion menu |
| Tab | Complete path/command, or cycle completions |
| Shift+Tab | Cycle completions backwards; otherwise cycle service tier when available |
| Ctrl+T | Toggle multiline mode |
| Ctrl+E | Edit the current buffer in $EDITOR |
| Ctrl+Y | Copy the last assistant or shell output |
| Ctrl+L | Redraw the screen |
| Ctrl+U | Clear the input buffer |
| Ctrl+C | Cancel the current operation; press twice quickly to exit |
| Ctrl+D | End the prompt session |
Markdown Theming
Markdown element colours are themeable with logger.theme_file; fenced-code rendering uses logger.code_theme.
The default Rich theme is equivalent to:
[styles]
markdown.h1 = bold yellow underline
markdown.h2 = yellow underline
markdown.h3 = bold yellow
markdown.h4 = italic yellow
markdown.h5 = italic yellow
markdown.h6 = dim yellow
markdown.link = bright_blue underline
markdown.link_url = bright_blue underline
markdown.code = bright_green on black
markdown.block_quote = blue
markdown.table.border = yellow
markdown.table.header = bright_yellow
markdown.hr = yellow dim
Save a modified copy and point logger.theme_file at it to override these styles.
Changing Settings
Use fast-agent config to configure your preferences:
fast-agent config displayedits console display, markdown rendering, streaming, and prompt mark settings.fast-agent config shelledits shell execution and file preview settings.
Environment variables
The table below lists the matching environment variable for each setting. In general, any nested setting can be overridden by uppercasing the path and joining segments with double underscores; for example, logger.code_theme becomes LOGGER__CODE_THEME.
TUI environment variables
| Symbol | Variable | Purpose |
|---|---|---|
FAST_AGENT_SHELL_CHILD_ENV |
FAST_AGENT_SHELL_CHILD |
Set to 1 in child shells opened from the TUI with !. |
TUI-related settings
| Setting | Environment variable | Type | Default | Description |
|---|---|---|---|---|
logger.streaming |
LOGGER__STREAMING |
Literal['markdown', 'plain', 'none'] |
markdown |
Streaming renderer for assistant responses. |
logger.enable_prompt_marks |
LOGGER__ENABLE_PROMPT_MARKS |
bool |
True |
Emit OSC 133 prompt marks for supported terminals. |
logger.progress_display |
LOGGER__PROGRESS_DISPLAY |
bool |
True |
Enable or disable progress display. |
logger.show_chat |
LOGGER__SHOW_CHAT |
bool |
True |
Show user and assistant messages on the console. |
logger.show_tools |
LOGGER__SHOW_TOOLS |
bool |
True |
Show MCP server tool calls on the console. |
logger.truncate_tools |
LOGGER__TRUNCATE_TOOLS |
bool |
True |
Truncate long tool call display. |
logger.theme_file |
LOGGER__THEME_FILE |
str \| None |
None |
Optional Rich theme file for console styles. |
logger.code_theme |
LOGGER__CODE_THEME |
str |
native |
Pygments/Rich syntax theme for Markdown code rendering. |
logger.render_fences_with_syntax |
LOGGER__RENDER_FENCES_WITH_SYNTAX |
bool |
True |
Render Markdown code fences with Rich Syntax. |
logger.code_word_wrap |
LOGGER__CODE_WORD_WRAP |
bool |
True |
Wrap Syntax-rendered code blocks instead of cropping. |
logger.apply_patch_preview_max_lines |
LOGGER__APPLY_PATCH_PREVIEW_MAX_LINES |
int \| None |
120 |
Maximum lines to show in apply_patch previews. |
logger.terminal_images.enabled |
LOGGER__TERMINAL_IMAGES__ENABLED |
bool |
True |
Render image content in capable terminals. |
logger.terminal_images.backend |
LOGGER__TERMINAL_IMAGES__BACKEND |
Literal['auto', 'textual-image', 'kitty', 'sixel', 'halfcell', 'unicode', 'none'] |
auto |
Terminal image backend to use. |
logger.terminal_images.width |
LOGGER__TERMINAL_IMAGES__WIDTH |
TerminalImageSize |
80% |
Image render width. |
logger.terminal_images.height |
LOGGER__TERMINAL_IMAGES__HEIGHT |
TerminalImageSize |
auto |
Image render height. |
shell_execution.output_display_lines |
SHELL_EXECUTION__OUTPUT_DISPLAY_LINES |
int \| None |
5 |
Maximum shell/read_text_file lines to display. |
shell_execution.show_bash |
SHELL_EXECUTION__SHOW_BASH |
bool |
True |
Show shell command output on the console. |
shell_execution.interactive_use_pty |
SHELL_EXECUTION__INTERACTIVE_USE_PTY |
bool |
True |
Use a PTY for interactive prompt shell commands. |
shell_execution.timeout_seconds |
SHELL_EXECUTION__TIMEOUT_SECONDS |
int |
90 |
Maximum seconds without command output before termination. |
shell_execution.warning_interval_seconds |
SHELL_EXECUTION__WARNING_INTERVAL_SECONDS |
int |
30 |
Show timeout warnings every N seconds. |
tui.completion_menu_reserved_lines |
TUI__COMPLETION_MENU_RESERVED_LINES |
int |
6 |
Prompt-toolkit lines reserved below the input for completion menus. |
Detailed Configuration Reference
See the Configuration Reference for the full set of settings.