diff --git a/internal/tui/chat/render_test.go b/internal/tui/chat/render_test.go index 3f91582..add5637 100644 --- a/internal/tui/chat/render_test.go +++ b/internal/tui/chat/render_test.go @@ -315,7 +315,7 @@ func TestExecCommandPreservesSafeBoundedMultilineInvocation(t *testing.T) { plain := ansi.Strip(RenderBlock(block, 32, DefaultStyles(true), 0)) want := strings.Join([]string{ - "✓ ran python3 - <<'PY'", + "✓ ran python3 - <<'PY' in .", " │ import json", " │ print('long command line th…", " │ … +4 lines", diff --git a/internal/tui/chat/tool.go b/internal/tui/chat/tool.go index 604635f..29b4c45 100644 --- a/internal/tui/chat/tool.go +++ b/internal/tui/chat/tool.go @@ -216,6 +216,9 @@ func classifyTool(tool *agent.ToolBlock) toolPresentation { if decodeObject(input, &in) && in.Cmd != "" { // Preserve command line boundaries for the exec-specific renderer. The // working directory remains compact metadata in the header. + if in.Workdir == "" { + in.Workdir = "." + } p.argument, p.context = escape.Multiline(in.Cmd), escape.SingleLine(in.Workdir) if in.TimeoutMS != nil && *in.TimeoutMS > 0 && *in.TimeoutMS <= spec.ExecMaxTimeoutMS { p.timeout = (time.Duration(*in.TimeoutMS) * time.Millisecond).String()