Hooks
What hello2cc runs automatically, and when. A hook is a command Claude Code fires at a fixed moment, without you asking for it.
> /plugin marketplace add hellowind777/hello2cc > /plugin install hello2cc@hello2cc-local
Ships with hello2cc. Installing the plugin gets these hooks.
What fires, and when
SessionStart
Fires once when a session begins, and again after a context compaction. It is where a plugin sets up its environment, or restores state the compaction dropped.
node "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" session-start
UserPromptSubmit
Fires before Claude sees each prompt you send. A plugin can use it to inject context, so the same instruction reaches the model every turn instead of only at session start.
node "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" route
SubagentStart
- Matches
Explorenode "${CLAUDE_PLUGIN_ROOT}/scripts/subagent-context.mjs" explore - Matches
Plannode "${CLAUDE_PLUGIN_ROOT}/scripts/subagent-context.mjs" plan - Matches
general-purposenode "${CLAUDE_PLUGIN_ROOT}/scripts/subagent-context.mjs" general
SubagentStop
- Matches
Explorenode "${CLAUDE_PLUGIN_ROOT}/scripts/subagent-stop.mjs" - Matches
Plannode "${CLAUDE_PLUGIN_ROOT}/scripts/subagent-stop.mjs" - Matches
general-purposenode "${CLAUDE_PLUGIN_ROOT}/scripts/subagent-stop.mjs"
TeammateIdle
node "${CLAUDE_PLUGIN_ROOT}/scripts/teammate-idle.mjs"
TaskCompleted
node "${CLAUDE_PLUGIN_ROOT}/scripts/task-lifecycle.mjs"
TaskCreated
node "${CLAUDE_PLUGIN_ROOT}/scripts/task-lifecycle.mjs"
ConfigChange
node "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" config-change
PreToolUse
- Matches
Agentnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-agent-model - Matches
Tasknode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-agent-model - Matches
EnterWorktreenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-enter-worktree - Matches
TeamCreatenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-team-create - Matches
TeamDeletenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-team-delete - Matches
TaskCreatenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-task-create - Matches
TaskListnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-task-list - Matches
TaskGetnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-task-get - Matches
TaskUpdatenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-task-update - Matches
ToolSearchnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-tool-search - Matches
EnterPlanModenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-enter-plan-mode - Matches
ExitPlanModenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-exit-plan-mode - Matches
AskUserQuestionnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-ask-user-question - Matches
SendMessagenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" pre-send-message
PostToolUse
- Matches
TeamCreatenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
TeamDeletenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
Agentnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
Tasknode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
SendMessagenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
TaskCreatenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
TaskListnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
TaskGetnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
TaskUpdatenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
ToolSearchnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
EnterPlanModenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
ExitPlanModenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
AskUserQuestionnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use - Matches
WebSearchnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-use
PostToolUseFailure
- Matches
Agentnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-failure - Matches
Tasknode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-failure - Matches
EnterWorktreenode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-failure - Matches
WebSearchnode "${CLAUDE_PLUGIN_ROOT}/scripts/orchestrator.mjs" post-tool-failure
Make third-party models inside Claude Code behave closer to a native Opus session. hello2cc does not replace your gateway, provider mapping, or account setup.

