deepseek-ai/deepseek-harness · error
hooks-claude-code: skipping unsupported "${s.type}" hook on
Error message
hooks-claude-code: skipping unsupported "${s.type}" hook on ${s.event} (only command hooks run) What it means
Error "hooks-claude-code: skipping unsupported "${s.type}" hook on ${s.event} (only command hooks run)" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/hooks/hooks-claude-code/src/index.ts:111
}
}
export function apply(ctx: Context, config: Config): void {
// Validate before config parsing so a bad value cannot be hidden by its early return.
const stderrSummaryMaxChars = config.stderrSummaryMaxChars ?? DEFAULT_STDERR_SUMMARY_MAX_CHARS
assertPositiveInteger('stderrSummaryMaxChars', stderrSummaryMaxChars)
const defaultTimeoutMs = config.defaultTimeoutMs ?? DEFAULT_HOOK_TIMEOUT_MS
// Parse once at load. A read or parse failure logs and registers nothing.
let parsed: ClaudeCodeHookConfig = {}
try {
const raw: unknown = JSON.parse(readFileSync(config.configPath, 'utf8'))
const result = parseClaudeCodeConfig(raw, {
...config.pluginRoot !== undefined ? { pluginRoot: config.pluginRoot } : {},
...config.projectDir !== undefined ? { projectDir: config.projectDir } : {},
})
parsed = result.config
for (const s of result.skipped) {
ctx.logger.warn(`hooks-claude-code: skipping unsupported "${s.type}" hook on ${s.event} (only command hooks run)`)
}
} catch (error: unknown) {
ctx.logger.warn(`hooks-claude-code: could not load hook config "${config.configPath}": ${String(error)} — no hooks registered`)
return
}
// Emit-shaped points run detached, so track their chains; disposal aborts
// active hooks and drains continuations before resolving.
const detached = createDetachedRuns()
// Only the start edge guarantees registry access. Retain each local child
// through its paired end so stop hooks keep the session workspace after the
// handle unregisters the agent. Every retained entry relies on that paired
// end; a producer that can omit it must provide another release edge.
const subagentChildren = new Map<SubagentRunId, Agent>()
ctx.effect(() => () => detached.drain(), 'hooks-claude-code: drain detached hook runs')
/**
* Run every command hook configured for `point` whose matcher selectsView on GitHub (pinned to b150a551b8)
Solutions
- Change the hook to a command hook; only command hooks run for the Claude Code bridge.
When it happens
Trigger: Thrown at packages/hooks/hooks-claude-code/src/index.ts:111 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24).
Data as JSON: /api/errors/4d5a56ce8d71fb31.
Report an issue: GitHub.