Dax Raad 6 месяцев назад
Родитель
Сommit
7e763e1c06
1 измененных файлов с 6 добавлено и 2 удалено
  1. 6 2
      packages/opencode/src/tool/bash.ts

+ 6 - 2
packages/opencode/src/tool/bash.ts

@@ -75,9 +75,13 @@ export const BashTool = Tool.define("bash", {
       if (["cd", "rm", "cp", "mv", "mkdir", "touch", "chmod", "chown"].includes(command[0])) {
       if (["cd", "rm", "cp", "mv", "mkdir", "touch", "chmod", "chown"].includes(command[0])) {
         for (const arg of command.slice(1)) {
         for (const arg of command.slice(1)) {
           if (arg.startsWith("-") || (command[0] === "chmod" && arg.startsWith("+"))) continue
           if (arg.startsWith("-") || (command[0] === "chmod" && arg.startsWith("+"))) continue
-          const resolved = await $`realpath ${arg}`.text().then((x) => x.trim())
+          const resolved = await $`realpath ${arg}`
+            .quiet()
+            .nothrow()
+            .text()
+            .then((x) => x.trim())
           log.info("resolved path", { arg, resolved })
           log.info("resolved path", { arg, resolved })
-          if (!Filesystem.contains(app.path.cwd, resolved)) {
+          if (resolved && !Filesystem.contains(app.path.cwd, resolved)) {
             throw new Error(
             throw new Error(
               `This command references paths outside of ${app.path.cwd} so it is not allowed to be executed.`,
               `This command references paths outside of ${app.path.cwd} so it is not allowed to be executed.`,
             )
             )