fix(cli): require recall permission prompts

This commit is contained in:
Alex Alecu
2026-04-03 12:07:25 +03:00
parent dd571e4b8b
commit e9fbf6b72a
2 changed files with 21 additions and 26 deletions
+1
View File
@@ -187,6 +187,7 @@ export namespace Agent {
"*": "allow",
bash, // kilocode_change
doom_loop: "ask",
recall: "ask", // kilocode_change
external_directory: {
"*": "ask",
...Object.fromEntries(whitelistedDirs.map((dir) => [dir, "allow"])),
+20 -26
View File
@@ -27,6 +27,16 @@ async function search(params: { query?: string; limit?: number }, ctx: Tool.Cont
throw new Error("The 'query' parameter is required when mode is 'search'")
}
await ctx.ask({
permission: "recall",
patterns: ["search"],
always: ["search"],
metadata: {
mode: "search",
query: params.query,
},
})
const limit = Math.min(params.limit ?? 20, 50)
const current = Instance.project.id
@@ -54,19 +64,6 @@ async function search(params: { query?: string; limit?: number }, ctx: Tool.Cont
})
}
const dirs = [...new Set(results.filter((r) => !r.current).map((r) => r.directory))]
if (dirs.length > 0) {
await ctx.ask({
permission: "recall",
patterns: dirs,
always: dirs,
metadata: {
mode: "search",
query: params.query,
},
})
}
if (results.length === 0) {
return {
title: `Search: "${params.query}" (no results)`,
@@ -95,20 +92,17 @@ async function read(params: { sessionID?: string }, ctx: Tool.Context) {
const session = await Session.get(params.sessionID).catch(() => {
throw new Error(`Session "${params.sessionID}" not found. Use search mode first to find valid session IDs.`)
})
const cross = session.projectID !== Instance.project.id
if (cross) {
await ctx.ask({
permission: "recall",
patterns: [session.directory],
always: [session.directory],
metadata: {
sessionID: session.id,
title: session.title,
directory: session.directory,
},
})
}
await ctx.ask({
permission: "recall",
patterns: [session.directory],
always: [session.directory],
metadata: {
sessionID: session.id,
title: session.title,
directory: session.directory,
},
})
const msgs = await Session.messages({ sessionID: session.id })
const lines: string[] = [