[{"data":1,"prerenderedAt":1273},["ShallowReactive",2],{"docs-nav":3,"docs-\u002Fdocs\u002Ftroubleshooting":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":68,"body":80,"description":1263,"extension":1264,"group":7,"meta":1265,"navTitle":68,"navigation":1266,"order":8,"path":67,"seo":1267,"stem":1271,"__hash__":1272},"docs\u002Fdocs\u002Ftroubleshooting.md",{"type":81,"value":82,"toc":1223},"minimark",[83,87,91,96,104,114,158,212,218,226,236,242,253,262,273,284,290,296,309,312,318,323,329,335,338,342,348,354,367,434,439,445,448,454,460,471,476,480,501,505,517,527,597,604,611,615,618,711,722,729,733,739,746,752,756,759,781,784,790,796,799,805,822,825,829,833,839,845,868,873,876,880,883,926,938,944,950,956,960,1034,1039,1043,1049,1055,1065,1072,1079,1083,1086,1092,1095,1099,1102,1173,1177,1180,1212,1219],[84,85,68],"h1",{"id":86},"troubleshooting",[88,89,90],"p",{},"locac tries to fail with a sentence you can act on rather than a stack trace. This page is the\nindex: the message on the left, what it means and what to do on the right.",[92,93,95],"h2",{"id":94},"the-run-will-not-start","The run will not start",[97,98,100],"h3",{"id":99},"error-model-is-required",[101,102,103],"code",{},"error: --model is required.",[88,105,106,109,110,113],{},[101,107,108],{},"run"," and ",[101,111,112],{},"resume"," never guess a model. Pass one, or set a default in the config file so you stop\ntyping it:",[115,116,121],"pre",{"className":117,"code":118,"language":119,"meta":120,"style":120},"language-bash shiki shiki-themes vitesse-dark","locac run \"…\" --provider anthropic --model claude-opus-4-8\n","bash","",[101,122,123],{"__ignoreMap":120},[124,125,127,131,135,139,142,145,149,152,155],"span",{"class":126,"line":29},"line",[124,128,130],{"class":129},"sCK9x","locac",[124,132,134],{"class":133},"s7rlk"," run",[124,136,138],{"class":137},"sNJcY"," \"",[124,140,141],{"class":133},"…",[124,143,144],{"class":137},"\"",[124,146,148],{"class":147},"sXjYR"," --provider",[124,150,151],{"class":133}," anthropic",[124,153,154],{"class":147}," --model",[124,156,157],{"class":133}," claude-opus-4-8\n",[115,159,163],{"className":160,"code":161,"language":162,"meta":120,"style":120},"language-json shiki shiki-themes vitesse-dark","{ \"provider\": \"anthropic\", \"model\": \"claude-opus-4-8\" }\n","json",[101,164,165],{"__ignoreMap":120},[124,166,167,171,174,178,180,183,185,188,190,193,195,198,200,202,204,207,209],{"class":126,"line":29},[124,168,170],{"class":169},"s_pn2","{",[124,172,138],{"class":173},"s6USN",[124,175,177],{"class":176},"sm68I","provider",[124,179,144],{"class":173},[124,181,182],{"class":169},":",[124,184,138],{"class":137},[124,186,187],{"class":133},"anthropic",[124,189,144],{"class":137},[124,191,192],{"class":169},",",[124,194,138],{"class":173},[124,196,197],{"class":176},"model",[124,199,144],{"class":173},[124,201,182],{"class":169},[124,203,138],{"class":137},[124,205,206],{"class":133},"claude-opus-4-8",[124,208,144],{"class":137},[124,210,211],{"class":169}," }\n",[97,213,215],{"id":214},"error-provide-either-provider-or-api",[101,216,217],{},"error: Provide either --provider … or --api …",[115,219,224],{"className":220,"code":222,"language":223,"meta":120},[221],"language-text","error: Provide either --provider \u003Cname> --model \u003Cid>, or --api \u003Capi> --base-url \u003Curl> --model \u003Cid>.\n","text",[101,225,222],{"__ignoreMap":120},[88,227,228,229,109,232,235],{},"You gave a model but no way to reach it. Either name a built-in provider, or describe an endpoint\nyourself with ",[101,230,231],{},"--api",[101,233,234],{},"--base-url",". Mixing halves of the two forms is what triggers this.",[97,237,239],{"id":238},"unknown-provider",[101,240,241],{},"Unknown provider \"…\"",[88,243,244,245,248,249,252],{},"The name is not a built-in and is not a saved custom provider. ",[101,246,247],{},"locac config show"," lists what is\nactually configured. See ",[250,251,36],"a",{"href":35},".",[97,254,256,257,261],{"id":255},"a-missing-api-key-is-not-a-startup-error","A missing API key is ",[258,259,260],"strong",{},"not"," a startup error",[88,263,264,265,268,269,272],{},"Nothing at startup checks that a key exists. A run with no key starts, sends its first request, and\nfails with an authentication error from the provider. If a run dies immediately on its first turn\nwith an auth failure, check the key before anything else: ",[101,266,267],{},"apiKey",", the ",[101,270,271],{},"$VAR"," it expands to, or\nthe provider's environment variable.",[88,274,275,276,279,280,283],{},"A ",[101,277,278],{},"\"$MY_KEY\""," value whose variable is unset resolves to ",[258,281,282],{},"nothing",", deliberately: locac would\nrather fail loudly than send an empty key and get a confusing 401.",[97,285,287],{"id":286},"error-unknown-tool",[101,288,289],{},"error: unknown tool \"…\"",[115,291,294],{"className":292,"code":293,"language":223,"meta":120},[221],"error: unknown tool \"raed\" in --tools (known: bash, code_search, coverage, …)\n",[101,295,293],{"__ignoreMap":120},[88,297,298,299,302,303,306,307,252],{},"A typo in ",[101,300,301],{},"--tools"," or ",[101,304,305],{},"--exclude-tools"," is a startup error, not a silent no-op. The full list of\nvalid names is in the ",[250,308,64],{"href":63},[88,310,311],{},"The same rule applies to a role in your config: every role's tool allow-list is validated at load,\nso a typo fails before the run rather than halfway through it, at spawn time:",[115,313,316],{"className":314,"code":315,"language":223,"meta":120},[221],"Role \"docs-reader\" names unknown tool \"raed\". Known: bash, code_search, coverage, …\n",[101,317,315],{"__ignoreMap":120},[88,319,320,321,252],{},"See ",[250,322,61],{"href":59},[97,324,326],{"id":325},"error-invalid-flag",[101,327,328],{},"error: invalid --\u003Cflag> \"…\"",[115,330,333],{"className":331,"code":332,"language":223,"meta":120},[221],"error: invalid --keep-recent \"abc\" (want a positive integer)\nerror: invalid --port \"http\" (want an integer 1–65535)\n",[101,334,332],{"__ignoreMap":120},[88,336,337],{},"Numeric flags are parsed and range-checked at startup. There is no silent fallback to a default.",[92,339,341],{"id":340},"the-sandbox-is-not-what-you-expected","The sandbox is not what you expected",[97,343,345],{"id":344},"locac-sandboxdirect-no-os-confinement",[101,346,347],{},"locac: sandbox=direct — NO OS confinement.",[115,349,352],{"className":350,"code":351,"language":223,"meta":120},[221],"locac: sandbox=direct — NO OS confinement. Target code runs with cwd pinned to the root only.\n  why: \u003Cthe host's own reason>\n  use --require-sandbox to refuse to start unconfined.\n",[101,353,351],{"__ignoreMap":120},[88,355,356,357,109,359,362,363,366],{},"The run has started, but ",[101,358,119],{},[101,360,361],{},"execute"," are running the target's code with your privileges.\nThe ",[101,364,365],{},"why:"," line is the host's actual reason. The common ones:",[368,369,370,383],"table",{},[371,372,373],"thead",{},[374,375,376,380],"tr",{},[377,378,379],"th",{},"Reason",[377,381,382],{},"Fix",[384,385,386,409,426],"tbody",{},[374,387,388,392],{},[389,390,391],"td",{},"The backend is not installed",[389,393,394,395,398,399,402,403,109,406,252],{},"Windows: ",[101,396,397],{},"npx sandbox-runtime windows-install",". Linux: install ",[101,400,401],{},"bwrap"," (bubblewrap), ",[101,404,405],{},"socat",[101,407,408],{},"ripgrep",[374,410,411,417],{},[389,412,413,416],{},[101,414,415],{},"a no-op command through it failed (exit 1)"," on Ubuntu 24.04+",[389,418,419,422,423,252],{},[101,420,421],{},"kernel.apparmor_restrict_unprivileged_userns=1"," blocks the nested user namespace. Either relax that sysctl or accept ",[101,424,425],{},"direct",[374,427,428,431],{},[389,429,430],{},"The probe timed out",[389,432,433],{},"The sandbox wedged. The probe is capped at 20 seconds so startup is not held hostage.",[88,435,436,437,252],{},"Per-OS prerequisites are in ",[250,438,32],{"href":31},[97,440,442],{"id":441},"error-require-sandbox-no-os-sandbox-on-this-host",[101,443,444],{},"error: --require-sandbox: no OS sandbox on this host",[88,446,447],{},"That is the flag doing its job: it turns the notice above into a refusal to start. Exit code 1.",[97,449,451],{"id":450},"locac-sandboxos-unix-socket-blocking-off",[101,452,453],{},"locac: sandbox=os — unix-socket blocking off …",[115,455,458],{"className":456,"code":457,"language":223,"meta":120},[221],"locac: sandbox=os — unix-socket blocking off: no apply-seccomp, AF_UNIX egress is not confined.\n",[101,459,457],{"__ignoreMap":120},[88,461,275,462,466,467,470],{},[463,464,465],"em",{},"partial"," sandbox on Linux. Filesystem and network confinement are in place; the seccomp stage\nthat blocks ",[101,468,469],{},"AF_UNIX"," is missing, so confined code can still reach host sockets, such as a system bus\nsocket, a container runtime socket. Usually this means the seccomp helper binary could not be\nresolved. Treat the run as confined-but-not-fully and do not point it at a repository you would not\notherwise run.",[88,472,473,474,252],{},"Why locac can tell you this at all, and why the verdict is measured rather than assumed, is in the\n",[250,475,52],{"href":51},[97,477,479],{"id":478},"a-dangerous-tool-call-was-silently-denied","A dangerous tool call was silently denied",[88,481,482,483,486,487,490,491,494,495,498,499,252],{},"\"Ask\" with nothing to ask is ",[258,484,485],{},"deny",". A piped, ",[101,488,489],{},"--print",", or CI run has no interactive terminal, so\nevery dangerous call fails closed. Pass ",[101,492,493],{},"--auto"," for read-only shell commands, or ",[101,496,497],{},"--yes"," to approve\neverything, knowing what that means. The table of what resolves how is in the\n",[250,500,64],{"href":63},[92,502,504],{"id":503},"runtime-asset-problems","Runtime asset problems",[115,506,508],{"className":117,"code":507,"language":119,"meta":120,"style":120},"locac selftest\n",[101,509,510],{"__ignoreMap":120},[124,511,512,514],{"class":126,"line":29},[124,513,130],{"class":129},[124,515,516],{"class":133}," selftest\n",[88,518,519,520,302,523,526],{},"Four checks, then ",[101,521,522],{},"selftest: OK",[101,524,525],{},"selftest: FAILED"," with exit 0 or 1:",[368,528,529,539],{},[371,530,531],{},[374,532,533,536],{},[377,534,535],{},"Check",[377,537,538],{},"A failure means",[384,540,541,560,576,587],{},[374,542,543,546],{},[389,544,545],{},"tree-sitter parses a sample and returns call sites",[389,547,548,549,552,553,109,556,559],{},"The compiled build lost its grammar assets. ",[101,550,551],{},"outline",", ",[101,554,555],{},"grok_sink",[101,557,558],{},"trace_callers"," will be blind.",[374,561,562,565],{},[389,563,564],{},"At least two bundled skills are readable",[389,566,567,568,571,572,575],{},"The embedded ",[101,569,570],{},"SKILL.md"," files did not materialise under ",[101,573,574],{},"LOCAC_HOME",". Check that directory is writable.",[374,577,578,581],{},[389,579,580],{},"The dashboard shell and client script are embedded",[389,582,583,586],{},[101,584,585],{},"locac web"," will serve a broken page.",[374,588,589,592],{},[389,590,591],{},"On Windows, the sandbox helper binary is non-empty",[389,593,594,595,252],{},"The Windows sandbox will never engage, and every run falls back to ",[101,596,425],{},[88,598,599,600,603],{},"The OS-sandbox line in the output is a ",[258,601,602],{},"note",", not a check: it reports what this host gets and\nnever changes the exit code, because a host without a sandbox is not a broken build.",[88,605,606,607,610],{},"Run ",[101,608,609],{},"selftest"," first whenever a compiled binary behaves differently from a development checkout.\nThat difference, a dependency resolving its own vendored binaries from a module URL that, inside a\ncompiled artifact, points at an embedded virtual filesystem, is exactly the class of bug these\nchecks exist to catch.",[92,612,614],{"id":613},"provider-failures","Provider failures",[88,616,617],{},"Every provider error is classified before it is acted on, and the classification decides whether the\nrequest is retried.",[368,619,620,633],{},[371,621,622],{},[374,623,624,627,630],{},[377,625,626],{},"Class",[377,628,629],{},"Comes from",[377,631,632],{},"Retried",[384,634,635,648,661,673,685,698],{},[374,636,637,642,645],{},[389,638,639],{},[101,640,641],{},"auth",[389,643,644],{},"401 \u002F 403",[389,646,647],{},"No. Fix the key",[374,649,650,655,658],{},[389,651,652],{},[101,653,654],{},"rate_limit",[389,656,657],{},"429",[389,659,660],{},"Yes",[374,662,663,668,671],{},[389,664,665],{},[101,666,667],{},"overloaded",[389,669,670],{},"408, 409, 529, any 5xx, and a 401\u002F403 whose body says the upstream auth is unavailable",[389,672,660],{},[374,674,675,680,683],{},[389,676,677],{},[101,678,679],{},"network",[389,681,682],{},"Transport failure",[389,684,660],{},[374,686,687,692,695],{},[389,688,689],{},[101,690,691],{},"context_overflow",[389,693,694],{},"400 \u002F 413 \u002F 422 with overflow phrasing in the body",[389,696,697],{},"No. See below",[374,699,700,705,708],{},[389,701,702],{},[101,703,704],{},"bad_request",[389,706,707],{},"Everything else in the 4xx range",[389,709,710],{},"No",[88,712,713,714,717,718,721],{},"Retries are 10 attempts by default, backing off from 500 ms to a 30-second ceiling with\nhalf-to-full jitter. A ",[101,715,716],{},"Retry-After"," header is honoured as a ",[258,719,720],{},"floor",", not a replacement, and it\nis capped at 60 seconds, so a provider cannot park your run for an hour.",[88,723,724,725,728],{},"One rule matters more than the numbers: ",[258,726,727],{},"a request is only retried while nothing durable has been\nforwarded."," Once assistant text has reached you, retrying would duplicate it. Thinking and\nreasoning tokens do not count as durable, so a turn that has only reasoned so far is still\nretryable.",[97,730,732],{"id":731},"the-stream-stopped-mid-response","The stream stopped mid-response",[115,734,737],{"className":735,"code":736,"language":223,"meta":120},[221],"provider closed the response stream before completing (no finish_reason) — the endpoint\u002Fproxy\ndropped its upstream connection mid-response (e.g. upstream auth unavailable or a disconnected\nstream). Retried automatically; if it persists the provider's upstream is unavailable, not the\nrequest\n",[101,738,736],{"__ignoreMap":120},[88,740,741,742,745],{},"locac detects a truncated SSE stream, with no ",[101,743,744],{},"finish_reason"," and no usage record, and retries it. If it\npersists, the problem is on the provider's side of the wire, not in your request.",[88,747,748,749,751],{},"Some endpoints legitimately never send ",[101,750,744],{},". There is a per-provider flag to disable\ntruncation detection for those, and it should stay off unless you have measured that endpoint:\nturning it on means a genuinely truncated response is accepted as a complete one.",[97,753,754],{"id":691},[101,755,691],{},[88,757,758],{},"The request was larger than the model's window. Compaction normally prevents this; when it does not:",[760,761,762,769,776],"ul",{},[763,764,765,766,252],"li",{},"Check you are not running with ",[101,767,768],{},"--no-compaction",[763,770,771,772,775],{},"Check the configured context window matches the model. A ",[101,773,774],{},"--context-window"," of zero or less is\nignored rather than applied.",[763,777,778,779,252],{},"After an overflow, compaction escalates one tier for the rest of the session and stays there.\nThere is no third tier. See ",[250,780,12],{"href":10},[92,782,56],{"id":783},"sessions",[97,785,787],{"id":786},"session-has-n-child-forks-delete-them-first",[101,788,789],{},"session … has N child fork(s); delete them first",[115,791,794],{"className":792,"code":793,"language":223,"meta":120},[221],"session 4f1c8a20 has 2 child fork(s); delete them first\n",[101,795,793],{"__ignoreMap":120},[88,797,798],{},"Deleting a session that other sessions branched from would orphan them, so it is refused. Delete\nthe leaves first.",[97,800,802],{"id":801},"no-session",[101,803,804],{},"No session \"…\"",[88,806,807,808,811,812,814,815,818,819,821],{},"The id does not exist ",[258,809,810],{},"in the database this command opened",". The database lives under\n",[101,813,574],{},", not in the target repository. If you are pointing ",[101,816,817],{},"--db"," somewhere else, or have set\n",[101,820,574],{}," differently between runs, you are looking at a different store.",[88,823,824],{},"If you used a build old enough to have written sessions inside the target root, locac says so once\nat startup rather than silently adopting a store the target repository could have rewritten.",[88,826,320,827,252],{},[250,828,56],{"href":54},[97,830,832],{"id":831},"a-resumed-pre-052-finding-is-refused-at-high-or-critical","A resumed pre-0.5.2 finding is refused at High or Critical",[115,834,837],{"className":835,"code":836,"language":223,"meta":120},[221],"Cannot promote finding f_…: it has no semantic execution proof bound to this file\u002FURL.\n",[101,838,836],{"__ignoreMap":120},[88,840,841,842,844],{},"0.5.2 made a proof artifact carry a structured claim and a checked assertion. Artifacts recorded\nbefore that release have neither, and they are ",[258,843,260],{}," grandfathered: the schema migration adds the\ntwo columns and loses no data, but an old row stays a diagnostic. The evidence is still in the\ndatabase and still readable; it just cannot promote a severity any more.",[88,846,847,848,851,852,855,856,859,860,863,864,867],{},"Re-run the proof under the current gate - ",[101,849,850],{},"reproduce"," with a ",[101,853,854],{},"claim"," matching the finding's location,\na ",[101,857,858],{},"run_module"," detection, or ",[101,861,862],{},"replay_request"," with a differential assertion - and attach the new\nartifact with ",[101,865,866],{},"record_finding(artifact_ref=…)",". This is deliberate: the point of the release was that\n\"a command ran and exited zero\" was being accepted as proof of exploitability, and honouring the old\nrows would keep exactly that class of finding alive.",[88,869,870,872],{},[250,871,44],{"href":43}," has the rest of what 0.5.2 changed under you.",[92,874,60],{"id":875},"skills-and-roles",[97,877,879],{"id":878},"a-skill-does-not-appear","A skill does not appear",[88,881,882],{},"Discovery is quiet by design: an unparseable file is skipped, not fatal. In order of likelihood:",[884,885,886,895,905,917],"ol",{},[763,887,888,891,892,894],{},[258,889,890],{},"CRLF line endings in the front matter."," This was a real bug: a ",[101,893,570],{}," authored on Windows\nparsed as having no front matter at all and the skill vanished. Current builds split on both, but\na stale binary will not.",[763,896,897,900,901,904],{},[258,898,899],{},"Wrong depth."," The glob is exactly ",[101,902,903],{},"*\u002FSKILL.md",", one level under the skills directory. A skill\nnested deeper is invisible, deliberately.",[763,906,907,916],{},[258,908,909,910,302,913,252],{},"Missing ",[101,911,912],{},"name",[101,914,915],{},"description"," Both are required; without either it is not a skill.",[763,918,919,922,923],{},[258,920,921],{},"An unsafe name."," ",[101,924,925],{},"Unsafe skill name \"…\" — use letters, digits, _ or -.",[88,927,928,931,932,302,935,252],{},[101,929,930],{},"locac skills list"," shows what was actually discovered, tagged ",[101,933,934],{},"[user]",[101,936,937],{},"[bundled]",[97,939,941],{"id":940},"no-user-skill-named",[101,942,943],{},"no user skill named \"…\"",[115,945,948],{"className":946,"code":947,"language":223,"meta":120},[221],"no user skill named \"x\" (add it first; bundled skills aren't editable in place)\n",[101,949,947],{"__ignoreMap":120},[88,951,952,955],{},[101,953,954],{},"locac skills edit"," only edits skills in your own directory. Bundled skills ship inside the binary;\nto modify one, add a user skill with the same name, which overrides the bundled one.",[92,957,959],{"id":958},"the-dashboard","The dashboard",[368,961,962,972],{},[371,963,964],{},[374,965,966,969],{},[377,967,968],{},"Response",[377,970,971],{},"Meaning",[384,973,974,987,1002,1012,1023],{},[374,975,976,981],{},[389,977,978],{},[101,979,980],{},"refusing to bind \u003Chost> without auth — the dashboard can launch bash. …",[389,982,983,984,252],{},"You asked for a non-loopback bind with no password and JWT secret configured. Set both, or bind ",[101,985,986],{},"127.0.0.1",[374,988,989,995],{},[389,990,991,994],{},[101,992,993],{},"forbidden host"," (403)",[389,996,997,998,1001],{},"The ",[101,999,1000],{},"Host"," header did not match the bind. Usually a reverse proxy or a custom hostname. The guard exists to stop DNS rebinding, so it will not be relaxed.",[374,1003,1004,1009],{},[389,1005,1006,994],{},[101,1007,1008],{},"bad csrf token",[389,1010,1011],{},"The request did not carry the per-startup CSRF header. Reload the page: the token is minted at startup, so a tab left open across a restart holds a stale one.",[374,1013,1014,1020],{},[389,1015,1016,1019],{},[101,1017,1018],{},"unauthorized"," (401)",[389,1021,1022],{},"A password is set and the session cookie is missing or expired. Log in again.",[374,1024,1025,1031],{},[389,1026,1027,1030],{},[101,1028,1029],{},"run routes are disabled — start the dashboard with \\","locac web --enable-runs`` (404)",[389,1032,1033],{},"Launching runs from the browser is opt-in.",[88,1035,1036,1037,252],{},"Details in ",[250,1038,77],{"href":75},[92,1040,1042],{"id":1041},"evaluation","Evaluation",[97,1044,1046],{"id":1045},"error-no-labeled-fixtures-under-dir",[101,1047,1048],{},"error: no labeled fixtures under \u003Cdir>",[115,1050,1053],{"className":1051,"code":1052,"language":223,"meta":120},[221],"error: no labeled fixtures under eval\u002Ffixtures\u002Fmixed (need a labels.json, or subdirs with one)\n",[101,1054,1052],{"__ignoreMap":120},[88,1056,1057,1060,1061,1064],{},[101,1058,1059],{},"--fixtures"," must point at a directory holding a ",[101,1062,1063],{},"labels.json",", or at a parent whose immediate\nsubdirectories do. Fixtures are not shipped in the binary: the corpus is yours.",[97,1066,1068,1071],{"id":1067},"no-significant-difference-on-an-obvious-improvement",[101,1069,1070],{},"no-significant-difference"," on an obvious improvement",[88,1073,1074,1075,1078],{},"The verdict is decided by the bootstrap interval, not by which mean is larger. With few trials the\ninterval is wide enough to include zero, which is the honest answer. Raise ",[101,1076,1077],{},"--trials"," before\nbelieving a small ΔS.",[92,1080,1082],{"id":1081},"interrupting-a-run","Interrupting a run",[88,1084,1085],{},"Ctrl+C once:",[115,1087,1090],{"className":1088,"code":1089,"language":223,"meta":120},[221],"^C — finishing the current step, then stopping (Ctrl+C again to force)\n",[101,1091,1089],{"__ignoreMap":120},[88,1093,1094],{},"The current tool call completes so the transcript stays consistent and the session is resumable. A\nsecond Ctrl+C stops immediately.",[92,1096,1098],{"id":1097},"exit-codes","Exit codes",[88,1100,1101],{},"CI reads this number and nothing else, so an audit that stopped early is distinguishable from one\nthat finished and found nothing.",[368,1103,1104,1113],{},[371,1105,1106],{},[374,1107,1108,1111],{},[377,1109,1110],{},"Code",[377,1112,971],{},[384,1114,1115,1125,1135,1163],{},[374,1116,1117,1122],{},[389,1118,1119],{},[101,1120,1121],{},"0",[389,1123,1124],{},"The run completed",[374,1126,1127,1132],{},[389,1128,1129],{},[101,1130,1131],{},"1",[389,1133,1134],{},"A real failure: a startup error, or the run ended in error",[374,1136,1137,1142],{},[389,1138,1139],{},[101,1140,1141],{},"2",[389,1143,1144,1147,1148,552,1151,552,1154,302,1157,1160,1161],{},[258,1145,1146],{},"Incomplete",": capped by ",[101,1149,1150],{},"--max-iterations",[101,1152,1153],{},"--max-tool-calls",[101,1155,1156],{},"--max-tokens",[101,1158,1159],{},"--max-wall-clock-ms",". Raise the cap and ",[101,1162,112],{},[374,1164,1165,1170],{},[389,1166,1167],{},[101,1168,1169],{},"130",[389,1171,1172],{},"Interrupted (the shell's SIGINT convention)",[92,1174,1176],{"id":1175},"still-stuck","Still stuck",[88,1178,1179],{},"Reproduce with the sandbox verdict visible and the run's own numbers in front of you:",[115,1181,1183],{"className":117,"code":1182,"language":119,"meta":120,"style":120},"locac selftest\nlocac config show      # ⚠ prints the effective config, apiKey included: redact before sharing\nlocac sessions\n",[101,1184,1185,1191,1205],{"__ignoreMap":120},[124,1186,1187,1189],{"class":126,"line":29},[124,1188,130],{"class":129},[124,1190,516],{"class":133},[124,1192,1193,1195,1198,1201],{"class":126,"line":33},[124,1194,130],{"class":129},[124,1196,1197],{"class":133}," config",[124,1199,1200],{"class":133}," show",[124,1202,1204],{"class":1203},"sux-A","      # ⚠ prints the effective config, apiKey included: redact before sharing\n",[124,1206,1207,1209],{"class":126,"line":41},[124,1208,130],{"class":129},[124,1210,1211],{"class":133}," sessions\n",[88,1213,1214,1215,1218],{},"The transcript of a failed run is in the session database and survives the failure. ",[101,1216,1217],{},"locac resume","\npicks up from it rather than restarting, which is usually faster than reproducing from scratch.",[1220,1221,1222],"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 .sNJcY, html code.shiki .sNJcY{--shiki-default:#C98A7D77}html pre.shiki code .sXjYR, html code.shiki .sXjYR{--shiki-default:#C99076}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 .s_pn2, html code.shiki .s_pn2{--shiki-default:#666666}html pre.shiki code .s6USN, html code.shiki .s6USN{--shiki-default:#B8A96577}html pre.shiki code .sm68I, html code.shiki .sm68I{--shiki-default:#B8A965}html pre.shiki code .sux-A, html code.shiki .sux-A{--shiki-default:#758575DD}",{"title":120,"searchDepth":41,"depth":41,"links":1224},[1225,1234,1240,1241,1245,1250,1254,1255,1260,1261,1262],{"id":94,"depth":33,"text":95,"children":1226},[1227,1228,1229,1230,1232,1233],{"id":99,"depth":41,"text":103},{"id":214,"depth":41,"text":217},{"id":238,"depth":41,"text":241},{"id":255,"depth":41,"text":1231},"A missing API key is not a startup error",{"id":286,"depth":41,"text":289},{"id":325,"depth":41,"text":328},{"id":340,"depth":33,"text":341,"children":1235},[1236,1237,1238,1239],{"id":344,"depth":41,"text":347},{"id":441,"depth":41,"text":444},{"id":450,"depth":41,"text":453},{"id":478,"depth":41,"text":479},{"id":503,"depth":33,"text":504},{"id":613,"depth":33,"text":614,"children":1242},[1243,1244],{"id":731,"depth":41,"text":732},{"id":691,"depth":41,"text":691},{"id":783,"depth":33,"text":56,"children":1246},[1247,1248,1249],{"id":786,"depth":41,"text":789},{"id":801,"depth":41,"text":804},{"id":831,"depth":41,"text":832},{"id":875,"depth":33,"text":60,"children":1251},[1252,1253],{"id":878,"depth":41,"text":879},{"id":940,"depth":41,"text":943},{"id":958,"depth":33,"text":959},{"id":1041,"depth":33,"text":1042,"children":1256},[1257,1258],{"id":1045,"depth":41,"text":1048},{"id":1067,"depth":41,"text":1259},"no-significant-difference on an obvious improvement",{"id":1081,"depth":33,"text":1082},{"id":1097,"depth":33,"text":1098},{"id":1175,"depth":33,"text":1176},"[object Object]","md",{},true,{"title":68,"description":1268},{"What the harness prints when something is wrong, what each message actually means, and the exact next step":1269,"group":19,"order":1270},"startup errors, sandbox degradation, provider failures, context overflow, and exit codes.",17,"docs\u002Ftroubleshooting","b8IuxtbrcstOKU0FJm89ip5ihis8IiQLllNFuaEQIpM",1786794387321]