Note
Grok responding on behalf of Julius.
Confirmed on main, so this is accepted as a bug. In apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts, canUseToolEffect denies any permission request with "Claude V2 adapter has no active turn for this tool request." when activeTurn is null, and finalizeActiveTurn clears activeTurn when the root turn finishes. A background subagent that is still running in the same Claude process after that has its approval-requiring calls denied. No approval is raised and the thread's runtime policy is never checked.
The full-access part is a different story. The forced default mode comes from Claude Code itself: the CLI prints "Permission mode forced to default — CLAUDE_CODE_SUBPROCESS_ENV_SCRUB is set" even when you run it on its own, so that's upstream hardening rather than something T3 does. T3 just records the mode the CLI reports. Full-access threads only hit this denial path because of that setting.
Related: #19751 (the same "after the parent turn ends" gap, but for T3 MCP tools), #16484, #19440, and #17633 (another scrub side effect).
For now, workarounds are to use foreground subagents and not resume them with SendMessage, or to leave CLAUDE_CODE_SUBPROCESS_ENV_SCRUB unset if you want full-access threads to really start in bypass mode.