fix(core): enforce V2 tool permissions (#31061)

This commit is contained in:
Kit Langton 2026-06-06 08:00:24 -04:00 committed by GitHub
commit 4814ab3a3d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 180 additions and 10 deletions

View file

@ -1,6 +1,6 @@
export * as QuestionTool from "./question"
import { Tool, toolText } from "@opencode-ai/llm"
import { Tool, ToolFailure, toolText } from "@opencode-ai/llm"
import { Effect, Layer, Schema } from "effect"
import { QuestionV2 } from "../question"
import { ToolRegistry } from "./registry"
@ -57,6 +57,11 @@ export const layer = Layer.effectDiscard(
yield* registry.contribute((editor) =>
editor.set(name, {
tool: definition,
permission: { action: "question", resource: "*" },
authorize: ({ assertPermission }) =>
assertPermission({ action: "question", resources: ["*"] }).pipe(
Effect.mapError(() => new ToolFailure({ message: "Permission denied: question" })),
),
execute: ({ parameters, sessionID, source }) =>
question
.ask({