Skip to content

Plugin-defined preToolUse hooks (hooks.json) do not fire - neither in main session nor subagents #2540

@solvaholic

Description

@solvaholic

Describe the bug

preToolUse hooks defined in a plugin's hooks.json file are never executed. The hooks don't fire in the main agent session or in subagents spawned via the task tool.

This is distinct from #2392, which reports that config.json-defined hooks work in the main session but not subagents. In our case, plugin-sourced hooks don't fire anywhere.

Affected version

1.0.18 (macOS)

Steps to reproduce the behavior

  1. Install a local plugin that defines a preToolUse hook in hooks.json:
    {
      "version": 1,
      "hooks": {
        "preToolUse": [
          {
            "type": "command",
            "bash": "./scripts/guardrails.sh",
            "cwd": ".",
            "timeoutSec": 10
          }
        ]
      }
    }
  2. The plugin's plugin.json references it with "hooks": "hooks.json"
  3. The guardrails script outputs {"permissionDecision": "deny", ...} for matching commands (verified by running the script manually with piped JSON input)
  4. Start a session in a project that has this plugin installed
  5. Run a bash command that should be blocked (e.g., one containing ghe-config-apply)
  6. Result: Command executes without any hook intervention
  7. Manually running the same script with the same input correctly returns a deny decision

Expected behavior

Plugin-defined preToolUse hooks should be loaded and executed for all tool calls, the same way config.json-defined hooks are.

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:agentsSub-agents, fleet, autopilot, plan mode, background agents, and custom agentsarea:pluginsPlugin system, marketplace, hooks, skills, extensions, and custom agentsarea:sessionsSession management, resume, history, session picker, and session state

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions