fix(subagent): remove permission.question=deny override that caused zombie sessions

Child session creation was injecting permission: { question: 'deny' } which
conflicted with OpenCode's child session permission handling, causing subagent
sessions to hang with 0 messages after creation (zombie state).

Remove the permission override from all session creators (BackgroundManager,
sync-session-creator, call-omo-agent) and rely on prompt-level tool restrictions
(tools.question=false) to maintain the intended policy.

Closes #1711
This commit is contained in:
YeonGyu-Kim
2026-02-11 11:55:56 +09:00
parent 73c0fc9bb5
commit cd0e2e5190
12 changed files with 106 additions and 33 deletions
@@ -1520,7 +1520,7 @@ describe("BackgroundManager - Non-blocking Queue Integration", () => {
})
describe("task transitions pending→running when slot available", () => {
test("should inherit parent session permission rules (and force deny question)", async () => {
test("does not override parent session permission when creating child session", async () => {
// given
const createCalls: any[] = []
const parentPermission = [
@@ -1562,11 +1562,7 @@ describe("BackgroundManager - Non-blocking Queue Integration", () => {
// then
expect(createCalls).toHaveLength(1)
const permission = createCalls[0]?.body?.permission
expect(permission).toEqual([
{ permission: "plan_enter", action: "deny", pattern: "*" },
{ permission: "question", action: "deny", pattern: "*" },
])
expect(createCalls[0]?.body?.permission).toBeUndefined()
})
test("should transition first task to running immediately", async () => {