[{"data":1,"prerenderedAt":1209},["ShallowReactive",2],{"docs-nav":3,"docs-\u002Fdocs\u002Frun":78},[4,9,13,16,21,26,30,34,38,42,46,50,53,58,62,66,69,74],{"path":5,"title":6,"navTitle":6,"group":7,"order":8},"\u002Fdocs\u002Fcommands","Other commands","Guide",999,{"path":10,"title":11,"navTitle":12,"group":7,"order":8},"\u002Fdocs\u002Fcompaction","Context and compaction","Context & compaction",{"path":14,"title":15,"navTitle":15,"group":7,"order":8},"\u002Fdocs\u002Fconfiguration","Configuration",{"path":17,"title":18,"navTitle":18,"group":19,"order":20},"\u002Fdocs\u002Fenvironment","Environment variables","Reference",11,{"path":22,"title":23,"navTitle":23,"group":24,"order":25},"\u002Fdocs\u002Fflags","Flag reference","CLI",8,{"path":27,"title":28,"navTitle":28,"group":7,"order":29},"\u002Fdocs","Introduction",1,{"path":31,"title":32,"navTitle":32,"group":7,"order":33},"\u002Fdocs\u002Finstallation","Installation",2,{"path":35,"title":36,"navTitle":36,"group":19,"order":37},"\u002Fdocs\u002Fproviders","Providers",10,{"path":39,"title":40,"navTitle":40,"group":7,"order":41},"\u002Fdocs\u002Fquickstart","Quickstart",3,{"path":43,"title":44,"navTitle":45,"group":7,"order":8},"\u002Fdocs\u002Freleases","Releases and upgrading","Releases",{"path":47,"title":48,"navTitle":49,"group":7,"order":8},"\u002Fdocs\u002Frun","The run command","Running an audit",{"path":51,"title":52,"navTitle":52,"group":7,"order":8},"\u002Fdocs\u002Fsecurity","Security model",{"path":54,"title":55,"navTitle":56,"group":24,"order":57},"\u002Fdocs\u002Fsessions","Sessions and forking","Sessions",6,{"path":59,"title":60,"navTitle":61,"group":7,"order":8},"\u002Fdocs\u002Fskills-roles","Skills and roles","Skills & roles",{"path":63,"title":64,"navTitle":64,"group":19,"order":65},"\u002Fdocs\u002Ftools","Tool reference",12,{"path":67,"title":68,"navTitle":68,"group":7,"order":8},"\u002Fdocs\u002Ftroubleshooting","Troubleshooting",{"path":70,"title":71,"navTitle":72,"group":24,"order":73},"\u002Fdocs\u002Ftui","The interactive TUI","Interactive TUI",9,{"path":75,"title":76,"navTitle":77,"group":7,"order":8},"\u002Fdocs\u002Fweb-eval","Dashboard and evaluation","Dashboard & evaluation",{"id":79,"title":48,"body":80,"description":1199,"extension":1200,"group":7,"meta":1201,"navTitle":49,"navigation":1202,"order":8,"path":47,"seo":1203,"stem":1207,"__hash__":1208},"docs\u002Fdocs\u002Frun.md",{"type":81,"value":82,"toc":1183},"minimark",[83,87,95,142,145,172,177,185,231,238,243,250,303,306,337,352,356,433,436,441,449,459,463,472,544,554,570,574,595,605,611,614,624,628,663,711,714,718,764,778,782,806,811,815,822,886,896,899,905,926,930,1022,1056,1060,1071,1140,1144,1151,1157,1163,1170,1174,1179],[84,85,48],"h1",{"id":86},"the-run-command",[88,89,90,94],"p",{},[91,92,93],"code",{},"locac run"," is the command that actually drives an audit. Everything else in the CLI either prepares\nfor a run, resumes one, or reads what one produced.",[96,97,102],"pre",{"className":98,"code":99,"language":100,"meta":101,"style":101},"language-bash shiki shiki-themes vitesse-dark","locac run [\"\u003Cprompt>\"] [flags]\n","bash","",[91,103,104],{"__ignoreMap":101},[105,106,108,112,116,120,124,127,129,132,136,139],"span",{"class":107,"line":29},"line",[105,109,111],{"class":110},"sCK9x","locac",[105,113,115],{"class":114},"s7rlk"," run",[105,117,119],{"class":118},"sNpkn"," [",[105,121,123],{"class":122},"sNJcY","\"",[105,125,126],{"class":114},"\u003Cprompt>",[105,128,123],{"class":122},[105,130,131],{"class":118},"] ",[105,133,135],{"class":134},"s_pn2","[",[105,137,138],{"class":118},"flags",[105,140,141],{"class":134},"]\n",[88,143,144],{},"Two shorthands exist:",[146,147,148,160],"ul",{},[149,150,151,156,157,159],"li",{},[152,153,154],"strong",{},[91,155,111],{}," with no arguments, on a real terminal, is ",[91,158,93],{},": it opens the TUI and lets you\ntype the prompt in the input box.",[149,161,162,167,168,171],{},[152,163,164],{},[91,165,166],{},"locac -c [\"\u003Cprompt>\"]"," continues the most recently used session instead of creating a new one.\nSee ",[169,170,55],"a",{"href":54},".",[173,174,176],"h2",{"id":175},"the-prompt","The prompt",[88,178,179,180,184],{},"The prompt is the first positional argument. It is optional ",[181,182,183],"em",{},"only"," when the TUI is going to open:",[96,186,188],{"className":98,"code":187,"language":100,"meta":101,"style":101},"locac run \"audit the archive extraction path for traversal and zip-slip\"\nlocac run --tui                    # opens idle; type the prompt in the box\nlocac run -p                       # error: run needs a prompt\n",[91,189,190,205,219],{"__ignoreMap":101},[105,191,192,194,196,199,202],{"class":107,"line":29},[105,193,111],{"class":110},[105,195,115],{"class":114},[105,197,198],{"class":122}," \"",[105,200,201],{"class":114},"audit the archive extraction path for traversal and zip-slip",[105,203,204],{"class":122},"\"\n",[105,206,207,209,211,215],{"class":107,"line":33},[105,208,111],{"class":110},[105,210,115],{"class":114},[105,212,214],{"class":213},"sXjYR"," --tui",[105,216,218],{"class":217},"sux-A","                    # opens idle; type the prompt in the box\n",[105,220,221,223,225,228],{"class":107,"line":41},[105,222,111],{"class":110},[105,224,115],{"class":114},[105,226,227],{"class":213}," -p",[105,229,230],{"class":217},"                       # error: run needs a prompt\n",[88,232,233,234,237],{},"Off a TTY, or with ",[91,235,236],{},"--print",", a missing prompt is an error rather than a silently empty run.",[239,240,242],"h3",{"id":241},"piped-stdin","Piped stdin",[88,244,245,246,249],{},"Anything piped into locac is appended to the prompt, wrapped in the same\n",[91,247,248],{},"⟦untrusted-output \u003Cnonce>⟧"," fence a tool result gets:",[96,251,253],{"className":98,"code":252,"language":100,"meta":101,"style":101},"git diff | locac run \"audit this diff\" -p\nlocac run \"explain this crash\" -p \u003C crash.log\n",[91,254,255,282],{"__ignoreMap":101},[105,256,257,260,263,267,270,272,274,277,279],{"class":107,"line":29},[105,258,259],{"class":110},"git",[105,261,262],{"class":114}," diff",[105,264,266],{"class":265},"s_wWq"," |",[105,268,269],{"class":110}," locac",[105,271,115],{"class":114},[105,273,198],{"class":122},[105,275,276],{"class":114},"audit this diff",[105,278,123],{"class":122},[105,280,281],{"class":213}," -p\n",[105,283,284,286,288,290,293,295,297,300],{"class":107,"line":33},[105,285,111],{"class":110},[105,287,115],{"class":114},[105,289,198],{"class":122},[105,291,292],{"class":114},"explain this crash",[105,294,123],{"class":122},[105,296,227],{"class":213},[105,298,299],{"class":265}," \u003C",[105,301,302],{"class":114}," crash.log\n",[88,304,305],{},"Three details matter:",[146,307,308,317,331],{},[149,309,310,313,314,316],{},[152,311,312],{},"Print mode only."," The TUI owns stdin for raw-mode keystrokes, so a piped run must use ",[91,315,236],{},"\n(or be non-TTY, where print mode is already the default). Otherwise the pipe is left undrained.",[149,318,319,322,323,326,327,330],{},[152,320,321],{},"An empty prompt stays empty."," ",[91,324,325],{},"cat suspect.c | locac run -p"," does ",[181,328,329],{},"not"," start a run whose entire\ncontent is attacker-authored. With no operator prompt, the \"run needs a prompt\" refusal applies.",[149,332,333,336],{},[152,334,335],{},"The fence nonce is per-invocation and random",", so the piped bytes cannot close the fence and\nescape into instruction territory.",[88,338,339,340,343,344,347,348,351],{},"locac detects a pipe by the ",[181,341,342],{},"file type"," of fd 0, a FIFO or a regular file, not by ",[91,345,346],{},"isTTY",". That is\nwhat keeps a plain ",[91,349,350],{},"locac run -p \"…\""," from blocking forever on a read that will never see data.",[173,353,355],{"id":354},"choosing-a-renderer","Choosing a renderer",[357,358,359,372],"table",{},[360,361,362],"thead",{},[363,364,365,369],"tr",{},[366,367,368],"th",{},"Flag",[366,370,371],{},"Renderer",[373,374,375,386,396,410,420],"tbody",{},[363,376,377,383],{},[378,379,380],"td",{},[181,381,382],{},"(none, on a TTY)",[378,384,385],{},"Fullscreen TUI, the default",[363,387,388,393],{},[378,389,390],{},[91,391,392],{},"--fullscreen",[378,394,395],{},"Fullscreen TUI, explicitly",[363,397,398,403],{},[378,399,400],{},[91,401,402],{},"--inline",[378,404,405,406,409],{},"Inline scrollback TUI (Ink ",[91,407,408],{},"\u003CStatic>","). Survives exit, native mouse scroll",[363,411,412,417],{},[378,413,414],{},[91,415,416],{},"--tui",[378,418,419],{},"Force the TUI even when the run would not have picked it",[363,421,422,430],{},[378,423,424,426,427],{},[91,425,236],{},", ",[91,428,429],{},"-p",[378,431,432],{},"Plain streaming text, no TUI. The default when piped or non-TTY",[88,434,435],{},"The fullscreen renderer pins the header and input, windows the transcript to the viewport, scrolls\nwith the wheel and PgUp\u002FPgDn, and returns to following the tail with Ctrl+End. The inline renderer\nwrites the transcript into normal terminal scrollback, so it is still there after the process exits.",[88,437,438,440],{},[91,439,236],{}," also prints a one-line statusline when the run finishes:",[96,442,447],{"className":443,"code":445,"language":446,"meta":101},[444],"language-text","⌁ claude-opus-4-8 · 14 turn(s) · 283914 tok · $1.4210 · goal · done\n","text",[91,448,445],{"__ignoreMap":101},[88,450,451,452,455,456,171],{},"Cost is omitted when it is zero, and the mode segment appears only for ",[91,453,454],{},"--plan"," and ",[91,457,458],{},"--goal",[173,460,462],{"id":461},"approval-modes","Approval modes",[88,464,465,466,455,468,471],{},"Dangerous tools, ",[91,467,100],{},[91,469,470],{},"execute",", are gated. Which gate you get depends on the flags and on\nwhether the terminal can answer a prompt:",[357,473,474,484],{},[360,475,476],{},[363,477,478,481],{},[366,479,480],{},"Flags",[366,482,483],{},"Behaviour",[373,485,486,497,509,519,532],{},[363,487,488,494],{},[378,489,490,493],{},[181,491,492],{},"(none)",", in the TUI on a real terminal",[378,495,496],{},"Each call raises an interactive approval prompt",[363,498,499,506],{},[378,500,501,503,504],{},[181,502,492],{},", off a TTY or in ",[91,505,236],{},[378,507,508],{},"Fail-closed. The call is blocked",[363,510,511,516],{},[378,512,513],{},[91,514,515],{},"--auto",[378,517,518],{},"Guardian: read-only shell commands auto-approved, everything else fail-closed",[363,520,521,529],{},[378,522,523,426,526],{},[91,524,525],{},"--yes",[91,527,528],{},"-y",[378,530,531],{},"Auto-approve dangerous tools with no prompt",[363,533,534,539],{},[378,535,536],{},[91,537,538],{},"--allow-all",[378,540,541,542],{},"An alias of ",[91,543,525],{},[88,545,546,455,548,550,551,553],{},[91,547,525],{},[91,549,538],{}," are checked before ",[91,552,515],{},", so combining them approves everything.",[555,556,557],"blockquote",{},[88,558,559,561,562,565,566,569],{},[91,560,515],{}," classifies commands ",[152,563,564],{},"lexically",". It is a convenience layer over the OS sandbox, not a\nreplacement for it; see ",[91,567,568],{},"--require-sandbox"," below.",[173,571,573],{"id":572},"requiring-the-sandbox","Requiring the sandbox",[96,575,577],{"className":98,"code":576,"language":100,"meta":101,"style":101},"locac run \"…\" --require-sandbox\n",[91,578,579],{"__ignoreMap":101},[105,580,581,583,585,587,590,592],{"class":107,"line":29},[105,582,111],{"class":110},[105,584,115],{"class":114},[105,586,198],{"class":122},[105,588,589],{"class":114},"…",[105,591,123],{"class":122},[105,593,594],{"class":213}," --require-sandbox\n",[88,596,597,598,601,602,604],{},"Without this flag a host with no working OS sandbox still runs ",[152,599,600],{},"unconfined"," and says so in a\nnotice line. ",[91,603,568],{}," turns that into a refusal:",[96,606,609],{"className":607,"code":608,"language":446,"meta":101},[444],"error: --require-sandbox: no OS sandbox on this host (\u003Creason>)\n",[91,610,608],{"__ignoreMap":101},[88,612,613],{},"The verdict is not a capability guess. locac runs a no-op command through the sandbox against the\nroot this run will confine, so a sandbox that is installed but non-functional is reported as absent.\nA partial sandbox is reported too, with its caveat: on Linux, that is bubblewrap's filesystem and\nnetwork confinement without the AF_UNIX-blocking stage.",[88,615,616,617,619,620,623],{},"Sandbox prerequisites per OS are in ",[169,618,32],{"href":31},"; ",[91,621,622],{},"locac selftest"," reports what\nthis host actually gets and why.",[173,625,627],{"id":626},"restricting-the-toolset","Restricting the toolset",[96,629,631],{"className":98,"code":630,"language":100,"meta":101,"style":101},"--tools \"read,search,find,ls,outline,code_search,glob\"    # allow-list\n--exclude-tools \"bash,execute\"                            # deny-list, applied after --tools\n",[91,632,633,648],{"__ignoreMap":101},[105,634,635,638,640,643,645],{"class":107,"line":29},[105,636,637],{"class":110},"--tools",[105,639,198],{"class":122},[105,641,642],{"class":114},"read,search,find,ls,outline,code_search,glob",[105,644,123],{"class":122},[105,646,647],{"class":217},"    # allow-list\n",[105,649,650,653,655,658,660],{"class":107,"line":33},[105,651,652],{"class":110},"--exclude-tools",[105,654,198],{"class":122},[105,656,657],{"class":114},"bash,execute",[105,659,123],{"class":122},[105,661,662],{"class":217},"                            # deny-list, applied after --tools\n",[146,664,665,674,680,689,700],{},[149,666,667,668,671,672,171],{},"Both are comma-separated tool names, and both apply to ",[152,669,670],{},"subagents"," as well as the main loop.\nEvery valid name is in the ",[169,673,64],{"href":63},[149,675,676,679],{},[91,677,678],{},"submit_report"," is never removable, because a subagent has to be able to answer its parent.",[149,681,682,683],{},"Names are validated against the whole tool universe. A typo is a startup error, not a silently\nempty toolset:",[96,684,687],{"className":685,"code":686,"language":446,"meta":101},[444],"error: unknown tool \"raed\" in --tools (known: bash, code_search, coverage, …)\n",[91,688,686],{"__ignoreMap":101},[149,690,691,692,695,696,699],{},"Naming a tool this particular run does not wire is allowed and simply does nothing: ",[91,693,694],{},"coverage","\nbefore anything has produced an lcov file, or ",[91,697,698],{},"present_plan"," outside plan mode.",[149,701,702,703,706,707,710],{},"The list is trimmed, deduplicated and sorted before use, so ",[91,704,705],{},"--tools \"read, read ,ls\""," and\n",[91,708,709],{},"--tools \"ls,read\""," are the same filter.",[88,712,713],{},"An allow-list of readers is the recommended first pass on an unfamiliar repository.",[173,715,717],{"id":716},"plan-mode","Plan mode",[96,719,721],{"className":98,"code":720,"language":100,"meta":101,"style":101},"locac run \"audit the auth module\" --plan\nlocac resume \u003Csession-id> \"go ahead\"\n",[91,722,723,739],{"__ignoreMap":101},[105,724,725,727,729,731,734,736],{"class":107,"line":29},[105,726,111],{"class":110},[105,728,115],{"class":114},[105,730,198],{"class":122},[105,732,733],{"class":114},"audit the auth module",[105,735,123],{"class":122},[105,737,738],{"class":213}," --plan\n",[105,740,741,743,746,748,751,754,757,759,762],{"class":107,"line":33},[105,742,111],{"class":110},[105,744,745],{"class":114}," resume",[105,747,299],{"class":265},[105,749,750],{"class":114},"session-i",[105,752,753],{"class":118},"d",[105,755,756],{"class":265},">",[105,758,198],{"class":122},[105,760,761],{"class":114},"go ahead",[105,763,204],{"class":122},[88,765,766,768,769,771,772,322,775,777],{},[91,767,454],{}," runs a read-only exploration phase that ends with ",[91,770,698],{},". The plan is not executed\nin that session turn; resuming the session ",[152,773,774],{},"without",[91,776,454],{}," runs the execute phase.",[173,779,781],{"id":780},"goal-mode","Goal mode",[96,783,785],{"className":98,"code":784,"language":100,"meta":101,"style":101},"locac run --goal \"find and prove one High-or-better RCE in the upload handler\" --auto\n",[91,786,787],{"__ignoreMap":101},[105,788,789,791,793,796,798,801,803],{"class":107,"line":29},[105,790,111],{"class":110},[105,792,115],{"class":114},[105,794,795],{"class":213}," --goal",[105,797,198],{"class":122},[105,799,800],{"class":114},"find and prove one High-or-better RCE in the upload handler",[105,802,123],{"class":122},[105,804,805],{"class":213}," --auto\n",[88,807,808,810],{},[91,809,458],{}," is autopilot: instead of stopping when the model would otherwise be done, the loop keeps\nfeeding the objective back in until the objective is met or a cap fires. It composes with a prompt:\nthe prompt starts the work, the goal decides when the work is finished.",[173,812,814],{"id":813},"caps","Caps",[88,816,817,818,821],{},"Every cap is optional, and each one is a ",[152,819,820],{},"positive integer",":",[357,823,824,833],{},[360,825,826],{},[363,827,828,830],{},[366,829,368],{},[366,831,832],{},"Stops the run when",[373,834,835,849,862,874],{},[363,836,837,842],{},[378,838,839],{},[91,840,841],{},"--max-iterations \u003Cn>",[378,843,844,845,848],{},"The loop has taken ",[91,846,847],{},"n"," turns. Unset means unlimited",[363,850,851,856],{},[378,852,853],{},[91,854,855],{},"--max-tool-calls \u003Cn>",[378,857,858,859,861],{},"Dispatching the next batch would exceed ",[91,860,847],{}," total tool calls",[363,863,864,869],{},[378,865,866],{},[91,867,868],{},"--max-tokens \u003Cn>",[378,870,871,872],{},"Cumulative token usage reaches ",[91,873,847],{},[363,875,876,881],{},[378,877,878],{},[91,879,880],{},"--max-wall-clock-ms \u003Cn>",[378,882,883,885],{},[91,884,847],{}," milliseconds of monotonic wall-clock have elapsed",[88,887,888,889,455,892,895],{},"Hitting any of them ends the run with stop reason ",[91,890,891],{},"budget",[152,893,894],{},"exit code 2",", distinct from a\nclean finish, so a pipeline can tell \"nothing found\" apart from \"ran out of budget, raise it and\nresume\".",[88,897,898],{},"A malformed value is a startup error, not a silent retune:",[96,900,903],{"className":901,"code":902,"language":446,"meta":101},[444],"error: invalid --keep-recent \"abc\" (want a positive integer)\n",[91,904,902],{"__ignoreMap":101},[88,906,907,908,911,912,915,916,918,919,455,922,925],{},"That check exists because ",[91,909,910],{},"Number.parseInt(\"abc\")"," is ",[91,913,914],{},"NaN",", and every comparison against ",[91,917,914],{}," is\nfalse, so a NaN cutoff turned compaction into a permanent no-op with nothing in the output to say so.\n",[91,920,921],{},"--max-tool-calls 8k",[91,923,924],{},"--max-tokens 80.5"," are rejected for the same reason.",[173,927,929],{"id":928},"other-run-flags","Other run flags",[357,931,932,941],{},[360,933,934],{},[363,935,936,938],{},[366,937,368],{},[366,939,940],{},"Meaning",[373,942,943,953,966,976,986,999,1009],{},[363,944,945,950],{},[378,946,947],{},[91,948,949],{},"--cwd \u003Cdir>",[378,951,952],{},"Target repository root. Defaults to the current directory",[363,954,955,960],{},[378,956,957],{},[91,958,959],{},"--db \u003Cpath>",[378,961,962,963],{},"Session database path. Defaults to a per-project file under ",[91,964,965],{},"~\u002F.locac\u002Fprojects",[363,967,968,973],{},[378,969,970],{},[91,971,972],{},"--system \u003Ctext>",[378,974,975],{},"Replace the system prompt outright",[363,977,978,983],{},[378,979,980],{},[91,981,982],{},"--style \u003Cname>",[378,984,985],{},"Prose style for the model's own text. Off by default",[363,987,988,993],{},[378,989,990],{},[91,991,992],{},"--shell-path \u003Cpath>",[378,994,995,996,998],{},"A bash-compatible shell for ",[91,997,470],{}," and the sandbox",[363,1000,1001,1006],{},[378,1002,1003],{},[91,1004,1005],{},"--context-window \u003Cn>",[378,1007,1008],{},"Override the model's context window, for custom endpoints",[363,1010,1011,1016],{},[378,1012,1013],{},[91,1014,1015],{},"--config \u003Cpath>",[378,1017,1018,1019],{},"Config file to read instead of ",[91,1020,1021],{},"~\u002F.locac\u002Fconfig.json",[88,1023,1024,1025,426,1028,426,1031,426,1034,426,1037,426,1040,1043,1044,426,1047,1050,1051,1053,1054,171],{},"Model selection flags (",[91,1026,1027],{},"--provider",[91,1029,1030],{},"--model",[91,1032,1033],{},"--api",[91,1035,1036],{},"--base-url",[91,1038,1039],{},"--api-key",[91,1041,1042],{},"--auth-scheme",",\n",[91,1045,1046],{},"--effort",[91,1048,1049],{},"--custom-provider",") are covered in ",[169,1052,15],{"href":14},", and every flag\nin the CLI is listed in the ",[169,1055,23],{"href":22},[173,1057,1059],{"id":1058},"compaction-flags","Compaction flags",[88,1061,1062,1063,1066,1067,1070],{},"Compaction is on by default and is LLM-free: it elides old tool output and leaves a\n",[91,1064,1065],{},"[elided \u003Cn> chars of \u003Ctool> output — recall seq=\u003CN>]"," marker the agent can expand with the ",[91,1068,1069],{},"recall","\ntool.",[357,1072,1073,1082],{},[360,1074,1075],{},[363,1076,1077,1079],{},[366,1078,368],{},[366,1080,1081],{},"Default",[373,1083,1084,1094,1104,1114,1130],{},[363,1085,1086,1091],{},[378,1087,1088],{},[91,1089,1090],{},"--reserve-tokens \u003Cn>",[378,1092,1093],{},"20% of the context window",[363,1095,1096,1101],{},[378,1097,1098],{},[91,1099,1100],{},"--keep-recent \u003Cn>",[378,1102,1103],{},"8 trailing messages kept verbatim",[363,1105,1106,1111],{},[378,1107,1108],{},[91,1109,1110],{},"--evidence-budget-tokens \u003Cn>",[378,1112,1113],{},"Half the reserve",[363,1115,1116,1121],{},[378,1117,1118],{},[91,1119,1120],{},"--compaction-mode \u003Celide|summarize>",[378,1122,1123,619,1126,1129],{},[91,1124,1125],{},"elide",[91,1127,1128],{},"summarize"," is reserved",[363,1131,1132,1137],{},[378,1133,1134],{},[91,1135,1136],{},"--no-compaction",[378,1138,1139],{},"Off. Debugging only; a long run may overflow the context",[173,1141,1143],{"id":1142},"stopping-a-run","Stopping a run",[88,1145,1146,1147,1150],{},"Ctrl+C on a headless run is not a bare ",[91,1148,1149],{},"SIGINT",". The first one aborts the loop at a message\nboundary, so the transcript stays balanced and resumable and the sandbox reaps its process group:",[96,1152,1155],{"className":1153,"code":1154,"language":446,"meta":101},[444],"^C — finishing the current step, then stopping (Ctrl+C again to force)\n",[91,1156,1154],{"__ignoreMap":101},[88,1158,1159,1160,171],{},"A second Ctrl+C hits the default handler and kills the process. An aborted run exits ",[152,1161,1162],{},"130",[88,1164,1165,1166,1169],{},"In the TUI, ",[91,1167,1168],{},"Esc"," is the same abort path.",[173,1171,1173],{"id":1172},"next","Next",[88,1175,1176,1178],{},[169,1177,55],{"href":54}," covers resuming, renaming, deleting, and branching the runs\nthis command creates.",[1180,1181,1182],"style",{},"html pre.shiki code .sCK9x, html code.shiki .sCK9x{--shiki-default:#80A665}html pre.shiki code .s7rlk, html code.shiki .s7rlk{--shiki-default:#C98A7D}html pre.shiki code .sNpkn, html code.shiki .sNpkn{--shiki-default:#DBD7CAEE}html pre.shiki code .sNJcY, html code.shiki .sNJcY{--shiki-default:#C98A7D77}html pre.shiki code .s_pn2, html code.shiki .s_pn2{--shiki-default:#666666}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sXjYR, html code.shiki .sXjYR{--shiki-default:#C99076}html pre.shiki code .sux-A, html code.shiki .sux-A{--shiki-default:#758575DD}html pre.shiki code .s_wWq, html code.shiki .s_wWq{--shiki-default:#CB7676}",{"title":101,"searchDepth":41,"depth":41,"links":1184},[1185,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198],{"id":175,"depth":33,"text":176,"children":1186},[1187],{"id":241,"depth":41,"text":242},{"id":354,"depth":33,"text":355},{"id":461,"depth":33,"text":462},{"id":572,"depth":33,"text":573},{"id":626,"depth":33,"text":627},{"id":716,"depth":33,"text":717},{"id":780,"depth":33,"text":781},{"id":813,"depth":33,"text":814},{"id":928,"depth":33,"text":929},{"id":1058,"depth":33,"text":1059},{"id":1142,"depth":33,"text":1143},{"id":1172,"depth":33,"text":1173},"[object Object]","md",{},true,{"title":48,"description":1204},{"Everything locac run does":1205,"group":24,"order":1206},"prompts and piped input, the three renderers, approval modes, tool filters, plan and goal modes, and the caps that stop a run.",5,"docs\u002Frun","KqBGFDyQLadrLk0C3W4pxxsL_TKM63wQfbXQpC-81Qg",1786794387518]