# show_hooks

Source: https://libtmux.org/en/py/latest/mcp/tools/show_hooks/

> List configured tmux hooks at the given scope.

MCP is in development

Server behavior and tool contracts may change. Tool availability depends on the server configuration.

List configured tmux hooks at the given scope.

`scope="server"` enumerates hooks installed via `tmux set-hook -g ...`. tmux splits those globals across two options trees by hook category: session-level hooks (`session-closed`, `client-*`, etc.) live in the global-session tree enumerated by `show-hooks -g`, while pane/window-level hooks (`pane-focus-in`, `window-resized`, etc.) live in the global-window tree enumerated by `show-hooks -gw`. This tool consults both trees and merges the results so the enumeration matches what a name-targeted :func:`~libtmux_mcp.tools.hook_tools.show_hook` call would return.

[All Python tools](https://libtmux.org/en/py/latest/mcp/tools/) · [JSON](https://libtmux.org/en/py/latest/mcp/tools/show_hooks.json) · [Source](https://github.com/tmux-python/libtmux-mcp/blob/4daddc0dfca96c43bf521d818bf91564e1434760/src/libtmux_mcp/tools/hook_tools.py#L243)

## Arguments

* `global_` optional · boolean

  Pass \`\`-g\`\` to query global hooks. Default False.

  Default: `false`.

* `scope` optional

  Hook scope (server/session/window/pane). Defaults to the calling object's scope when a \`\`target\`\` is given.

  Default: `null`.

* `socket_name` optional

  tmux socket name.

  Default: `null`.

* `target` optional

  Target identifier. For session scope: session name. For window scope: window ID. For pane scope: pane ID. Requires \`\`scope\`\`.

  Default: `null`.

## Schemas

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

Input schema

```json
{
  "additionalProperties": false,
  "properties": {
    "global_": {
      "default": false,
      "description": "Pass ``-g`` to query global hooks. Default False.",
      "type": "boolean"
    },
    "scope": {
      "anyOf": [
        {
          "enum": [
            "server",
            "session",
            "window",
            "pane"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Hook scope (server/session/window/pane). Defaults to the\ncalling object's scope when a ``target`` is given."
    },
    "socket_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "tmux socket name."
    },
    "target": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Target identifier. For session scope: session name. For window\nscope: window ID. For pane scope: pane ID. Requires ``scope``."
    }
  },
  "type": "object"
}
```

Output schema

```json
{
  "description": "Structured result for hook introspection.\n\nReturned by :func:`~libtmux_mcp.tools.hook_tools.show_hooks` and\n:func:`~libtmux_mcp.tools.hook_tools.show_hook`.\nFlat list of :class:`~libtmux_mcp.models.HookEntry` instances so\nMCP clients can iterate without caring whether the underlying tmux\nhook is scalar or array-shaped.",
  "properties": {
    "entries": {
      "items": {
        "description": "One entry in a tmux hook array.\n\nHooks like ``session-renamed`` are arrays — they can have multiple\ncommands registered at sparse indices.\n:class:`~libtmux_mcp.models.HookEntry` flattens one index+command\npair into a serialisable row.",
        "properties": {
          "command": {
            "description": "tmux command string registered at that index.",
            "type": "string"
          },
          "hook_name": {
            "description": "Hook name (e.g. 'pane-exited').",
            "type": "string"
          },
          "index": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Array index for array-style hooks (e.g. session-renamed[3]). ``None`` for scalar hooks."
          }
        },
        "required": [
          "hook_name",
          "command"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "type": "object"
}
```

Tool annotations

```json
{
  "destructiveHint": true,
  "idempotentHint": false,
  "openWorldHint": true,
  "readOnlyHint": false
}
```
