증상
턴에서 백그라운드 에이전트를 띄운 뒤 "보고가 도착하면 종합하겠습니다"처럼 정당하게 끝내면, finish-the-work.sh가 이를 미이행 약속으로 판정해 차단합니다.
하지만 이 상황엔 "지금 할 일"이 없습니다 — 일은 이미 백그라운드에서 돌고 있고, 에이전트는 완료 알림이 올 때까지 턴을 올바르게 양보한 것이니까요. 차단당한 에이전트가 할 수 있는 건 같은 말을 다르게 표현하는 것뿐입니다.
원인
훅이 마지막 assistant 메시지의 텍스트만 검사해서, 진행 중인 백그라운드 작업이 보이지 않습니다.
i18n 문제가 아닙니다 — 영어 패턴("I'll synthesize once the agents report back" → I'll … then 매치)도 동일하게 걸립니다.
재현
트랜스크립트 꼬리가 다음 순서일 때:
Agent tool_use (백그라운드 에이전트 스폰)
- tool_result: "Async agent launched… running in background"
- 텍스트만 있는 턴, 약속으로 종결 ("…도착하면 정리할게요" / "…I'll synthesize the results then")
→ {"decision":"block"} 출력.
대조군은 설계 의도대로 동작합니다: 과거형 종결("완료했습니다") 통과, 질문 종결("괜찮을까요?") 통과, 도구 호출로 끝난 턴 통과.
제안
차단하기 전에 트랜스크립트 꼬리에서 "시작됐지만 완료 알림이 없는 백그라운드 작업"(async launch tool_result 이후 대응하는 완료 notification 부재)을 스캔해, 있으면 통과시키는 방법이 있습니다.
원하시면 PR 보내겠습니다.
🤖 Generated with Claude Code
증상
턴에서 백그라운드 에이전트를 띄운 뒤 "보고가 도착하면 종합하겠습니다"처럼 정당하게 끝내면,
finish-the-work.sh가 이를 미이행 약속으로 판정해 차단합니다.하지만 이 상황엔 "지금 할 일"이 없습니다 — 일은 이미 백그라운드에서 돌고 있고, 에이전트는 완료 알림이 올 때까지 턴을 올바르게 양보한 것이니까요. 차단당한 에이전트가 할 수 있는 건 같은 말을 다르게 표현하는 것뿐입니다.
원인
훅이 마지막 assistant 메시지의 텍스트만 검사해서, 진행 중인 백그라운드 작업이 보이지 않습니다.
i18n 문제가 아닙니다 — 영어 패턴("I'll synthesize once the agents report back" →
I'll … then매치)도 동일하게 걸립니다.재현
트랜스크립트 꼬리가 다음 순서일 때:
Agenttool_use (백그라운드 에이전트 스폰)→
{"decision":"block"}출력.대조군은 설계 의도대로 동작합니다: 과거형 종결("완료했습니다") 통과, 질문 종결("괜찮을까요?") 통과, 도구 호출로 끝난 턴 통과.
제안
차단하기 전에 트랜스크립트 꼬리에서 "시작됐지만 완료 알림이 없는 백그라운드 작업"(async launch tool_result 이후 대응하는 완료 notification 부재)을 스캔해, 있으면 통과시키는 방법이 있습니다.
원하시면 PR 보내겠습니다.
🤖 Generated with Claude Code