From 3732e95cfc2181af7ed9adb6306eee7260c8c795 Mon Sep 17 00:00:00 2001 From: Alex Alecu Date: Mon, 27 Apr 2026 17:43:10 +0300 Subject: [PATCH] fix(cli): deny shell operators --- packages/opencode/src/kilocode/agent/index.ts | 6 ++++++ .../opencode/test/kilocode/ask-agent-permissions.test.ts | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/packages/opencode/src/kilocode/agent/index.ts b/packages/opencode/src/kilocode/agent/index.ts index e591545429a..c23b4b2bbef 100644 --- a/packages/opencode/src/kilocode/agent/index.ts +++ b/packages/opencode/src/kilocode/agent/index.ts @@ -110,6 +110,12 @@ export const readOnlyBash: Record = { "git branch -r *": "allow", "git remote -v *": "allow", "gh *": "ask", + "*|*": "deny", + "*;*": "deny", + "*&&*": "deny", + "*&*": "deny", + "*$(*": "deny", + "*`*": "deny", "*>*": "deny", "* > *": "deny", "*>>*": "deny", diff --git a/packages/opencode/test/kilocode/ask-agent-permissions.test.ts b/packages/opencode/test/kilocode/ask-agent-permissions.test.ts index ee9a60f2ea0..f02465852ba 100644 --- a/packages/opencode/test/kilocode/ask-agent-permissions.test.ts +++ b/packages/opencode/test/kilocode/ask-agent-permissions.test.ts @@ -111,6 +111,11 @@ describe("Ask agent bash permissions", () => { const denied = [ "echo hi > file", "echo hi >> file", + "echo hi | tee file", + "echo hi; touch file", + "echo hi && touch file", + "echo $(touch file)", + "echo `touch file`", "cat a > b", "jq . a.json > b.json", "sort names.txt -o names.txt",