# ChatInput

> **Class** in `deepagents_code`

📖 [View in docs](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput)

Chat input widget with prompt, multi-line text, autocomplete, and history.

Features:
- Multi-line input with TextArea
- Enter to submit, modifier key for newlines (see `config.newline_shortcut`)
- Up/Down arrows for command history at input boundaries (start/end of text)
- Autocomplete for @ (files), @@ (threads), and / (commands)
- Drag the top border to resize the composer; double-click it to expand to
  the maximum height, or to drop a manual height back to content-driven
  sizing

## Signature

```python
ChatInput(
    self,
    cwd: str | Path | None = None,
    history_file: Path | None = None,
    image_tracker: MediaTracker | None = None,
    kwargs: Any = {},
)
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `cwd` | `str \| Path \| None` | No | Current working directory for file completion (default: `None`) |
| `history_file` | `Path \| None` | No | Override path for persisted input history. Resolved by `_default_history_path()` when `None`. (default: `None`) |
| `image_tracker` | `MediaTracker \| None` | No | Optional tracker for attached images (default: `None`) |
| `**kwargs` | `Any` | No | Additional arguments for parent (default: `{}`) |

## Extends

- `Vertical`

## Constructors

```python
__init__(
    self,
    cwd: str | Path | None = None,
    history_file: Path | None = None,
    image_tracker: MediaTracker | None = None,
    kwargs: Any = {},
) -> None
```

| Name | Type |
|------|------|
| `cwd` | `str \| Path \| None` |
| `history_file` | `Path \| None` |
| `image_tracker` | `MediaTracker \| None` |
| `kwargs` | `Any` |


## Properties

- `DEFAULT_CSS`
- `mode`
- `submission_block_reason`
- `value`
- `input_widget`

## Methods

- [`compose()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/compose)
- [`on_mount()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_mount)
- [`on_resize()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_resize)
- [`on_chat_input_resize_handle_drag_started()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_chat_input_resize_handle_drag_started)
- [`on_chat_input_resize_handle_dragged()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_chat_input_resize_handle_dragged)
- [`on_chat_input_resize_handle_drag_ended()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_chat_input_resize_handle_drag_ended)
- [`on_chat_input_resize_handle_hover_changed()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_chat_input_resize_handle_hover_changed)
- [`on_chat_input_resize_handle_toggle_expanded()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_chat_input_resize_handle_toggle_expanded)
- [`set_cwd()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/set_cwd)
- [`update_slash_commands()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/update_slash_commands)
- [`set_argument_hint_override()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/set_argument_hint_override)
- [`on_text_area_changed()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_text_area_changed)
- [`handle_mode_prefix_keystroke()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/handle_mode_prefix_keystroke)
- [`active_thread_query()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/active_thread_query)
- [`insert_thread_reference()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/insert_thread_reference)
- [`on_chat_text_area_typing()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_chat_text_area_typing)
- [`on_chat_text_area_submitted()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_chat_text_area_submitted)
- [`on_chat_text_area_history_previous()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_chat_text_area_history_previous)
- [`on_chat_text_area_history_next()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_chat_text_area_history_next)
- [`apply_paste_payload()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/apply_paste_payload)
- [`suppress_next_prefix_detection()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/suppress_next_prefix_detection)
- [`handle_external_paste()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/handle_external_paste)
- [`on_key()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_key)
- [`watch_mode()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/watch_mode)
- [`focus_input()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/focus_input)
- [`set_value_at_end()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/set_value_at_end)
- [`recent_prompts()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/recent_prompts)
- [`prompt_history_error()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/prompt_history_error)
- [`insert_at_cursor()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/insert_at_cursor)
- [`open_prompt_search()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/open_prompt_search)
- [`escalate_prompt_search()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/escalate_prompt_search)
- [`on_prompt_search_input_abandon_search()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_prompt_search_input_abandon_search)
- [`on_input_changed()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_input_changed)
- [`on_input_submitted()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_input_submitted)
- [`on_prompt_search_panel_option_selected()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_prompt_search_panel_option_selected)
- [`discard_text()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/discard_text)
- [`on_input_action_button_clicked()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_input_action_button_clicked)
- [`set_disabled()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/set_disabled)
- [`set_cursor_active()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/set_cursor_active)
- [`set_cursor_style()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/set_cursor_style)
- [`set_cursor_blink()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/set_cursor_blink)
- [`exit_mode()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/exit_mode)
- [`dismiss_completion()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/dismiss_completion)
- [`render_completion_suggestions()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/render_completion_suggestions)
- [`clear_completion_suggestions()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/clear_completion_suggestions)
- [`on_completion_popup_option_clicked()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/on_completion_popup_option_clicked)
- [`replace_completion_range()`](https://reference.langchain.com/python/deepagents-code/tui/widgets/chat_input/ChatInput/replace_completion_range)

---

[View source on GitHub](https://github.com/langchain-ai/deepagents/blob/02ed19a42715fe0e9f2059fe8cf4fe6883054f08/libs/code/deepagents_code/tui/widgets/chat_input.py#L2136)