fix(hooks): add bash-file-read-guard to warn agents against cat/head/tail (fixes #2096)

This commit is contained in:
MoerAI
2026-03-23 20:15:20 +09:00
parent 331f7ec52b
commit 2f801f6c28
5 changed files with 54 additions and 0 deletions
@@ -11,6 +11,7 @@ import {
createRulesInjectorHook,
createTasksTodowriteDisablerHook,
createWriteExistingFileGuardHook,
createBashFileReadGuardHook,
createHashlineReadEnhancerHook,
createReadImageResizerHook,
createJsonErrorRecoveryHook,
@@ -33,6 +34,7 @@ export type ToolGuardHooks = {
rulesInjector: ReturnType<typeof createRulesInjectorHook> | null
tasksTodowriteDisabler: ReturnType<typeof createTasksTodowriteDisablerHook> | null
writeExistingFileGuard: ReturnType<typeof createWriteExistingFileGuardHook> | null
bashFileReadGuard: ReturnType<typeof createBashFileReadGuardHook> | null
hashlineReadEnhancer: ReturnType<typeof createHashlineReadEnhancerHook> | null
jsonErrorRecovery: ReturnType<typeof createJsonErrorRecoveryHook> | null
readImageResizer: ReturnType<typeof createReadImageResizerHook> | null
@@ -101,6 +103,10 @@ export function createToolGuardHooks(args: {
? safeHook("write-existing-file-guard", () => createWriteExistingFileGuardHook(ctx))
: null
const bashFileReadGuard = isHookEnabled("bash-file-read-guard")
? safeHook("bash-file-read-guard", () => createBashFileReadGuardHook())
: null
const hashlineReadEnhancer = isHookEnabled("hashline-read-enhancer")
? safeHook("hashline-read-enhancer", () => createHashlineReadEnhancerHook(ctx, { hashline_edit: { enabled: pluginConfig.hashline_edit ?? false } }))
: null
@@ -126,6 +132,7 @@ export function createToolGuardHooks(args: {
rulesInjector,
tasksTodowriteDisabler,
writeExistingFileGuard,
bashFileReadGuard,
hashlineReadEnhancer,
jsonErrorRecovery,
readImageResizer,
+1
View File
@@ -45,6 +45,7 @@ export function createToolExecuteBeforeHandler(args: {
await hooks.questionLabelTruncator?.["tool.execute.before"]?.(input, output)
await hooks.claudeCodeHooks?.["tool.execute.before"]?.(input, output)
await hooks.nonInteractiveEnv?.["tool.execute.before"]?.(input, output)
await hooks.bashFileReadGuard?.["tool.execute.before"]?.(input, output)
await hooks.commentChecker?.["tool.execute.before"]?.(input, output)
await hooks.directoryAgentsInjector?.["tool.execute.before"]?.(input, output)
await hooks.directoryReadmeInjector?.["tool.execute.before"]?.(input, output)