Prerelease This site documents an alpha of libtmux. Its structure, URLs and APIs are subject to change.

search_panes

Search visible terminal text across all tmux panes.

Use when the user asks what panes ‘contain’, ‘mention’, or ‘show’ — e.g. ‘find the pane with the pytest failure’. Searches each pane’s visible terminal scrollback content (not editor or browser text) and returns panes where the pattern is found, with matching lines.

All Python tools · JSON · Source

Arguments

content_end optional
End line for capture.

Default: null.

content_start optional
Start line for capture. Negative values reach into scrollback.

Default: null.

limit optional
Maximum matching panes returned on this call. Defaults to ``SEARCH_DEFAULT_LIMIT``. Pass ``None`` to disable the cap.

Default: 500.

match_case optional · boolean
Whether to match case. Default False (case-insensitive).

Default: false.

max_matched_lines_per_pane optional · integer
Per-pane cap on ``matched_lines``. Defaults to ``SEARCH_DEFAULT_MAX_LINES_PER_PANE``.

Default: 50.

offset optional · integer
Skip this many matching panes from the start. Use with ``limit`` for pagination.

Default: 0.

pattern required · string
Text to search for in pane contents. Treated as literal text by default. Set ``regex=True`` to interpret as a regular expression.
regex optional · boolean
Whether to interpret pattern as a regular expression. Default False (literal text matching).

Default: false.

session_id optional
Limit search to panes in this session (by ID).

Default: null.

session_name optional
Limit search to panes in this session.

Default: null.

socket_name optional
tmux socket name.

Default: null.

Schemas

The schema defines required fields, nested values, defaults, and validation constraints.

Input schema
{
"additionalProperties": false,
"properties": {
"content_end": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "End line for capture."
},
"content_start": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Start line for capture. Negative values reach into scrollback."
},
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 500,
"description": "Maximum matching panes returned on this call. Defaults to\n``SEARCH_DEFAULT_LIMIT``. Pass ``None`` to disable the cap."
},
"match_case": {
"default": false,
"description": "Whether to match case. Default False (case-insensitive).",
"type": "boolean"
},
"max_matched_lines_per_pane": {
"default": 50,
"description": "Per-pane cap on ``matched_lines``. Defaults to\n``SEARCH_DEFAULT_MAX_LINES_PER_PANE``.",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Skip this many matching panes from the start. Use with\n``limit`` for pagination.",
"type": "integer"
},
"pattern": {
"description": "Text to search for in pane contents. Treated as literal text by\ndefault. Set ``regex=True`` to interpret as a regular expression.",
"type": "string"
},
"regex": {
"default": false,
"description": "Whether to interpret pattern as a regular expression. Default False\n(literal text matching).",
"type": "boolean"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Limit search to panes in this session (by ID)."
},
"session_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Limit search to panes in this session."
},
"socket_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "tmux socket name."
}
},
"required": [
"pattern"
],
"type": "object"
}
Tool annotations
{
"destructiveHint": true,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false
}
Esc

Type to search.