[{"data":1,"prerenderedAt":389},["ShallowReactive",2],{"-docs-guide-troubleshooting":3,"-docs-guide-troubleshooting-surround":376},{"id":4,"title":5,"body":6,"description":366,"extension":367,"links":368,"meta":369,"navigation":370,"path":372,"seo":373,"stem":374,"__hash__":375},"docs\u002Fdocs\u002F2.guide\u002F9.troubleshooting.md","Runner troubleshooting",{"type":7,"value":8,"toc":355},"minimark",[9,18,26,36,46,51,73,76,82,89,98,102,120,123,127,132,137,141,163,166,170,179,188,192,224,235,239,248,253,257,285,289,294,303,307,328,332],[10,11,12,13,17],"p",{},"Use the project ",[14,15,16],"strong",{},"Slices"," view first. Filter by failed status or search the error text, then open a slice to inspect the runner error, import error, duration, exit code, report count, and artifact metadata.",[19,20,22],"h2",{"id":21},"_409-prompt_hash-mismatch",[23,24,25],"code",{},"409 prompt_hash mismatch",[10,27,28,31,32,35],{},[14,29,30],{},"Symptom:"," The agent prints ",[23,33,34],{},"rejected (prompt_hash mismatch)",".",[10,37,38,41,42,45],{},[14,39,40],{},"Cause:"," The ",[23,43,44],{},"prompt_hash"," echoed with the result does not match the exact rendered prompt bytes served for that lease. A proxy, custom host, or runner changed the prompt after claim.",[10,47,48],{},[14,49,50],{},"Fix:",[52,53,54,58,61,68],"ol",{},[55,56,57],"li",{},"Discard the modified prompt and lease payload.",[55,59,60],{},"Claim the slice again.",[55,62,63,64,67],{},"Pass the temporary ",[23,65,66],{},"{prompt_path}"," to the model without rewriting it.",[55,69,70,71,35],{},"If you implement an external host, hash the served UTF-8 prompt bytes before execution and compare them with ",[23,72,44],{},[10,74,75],{},"Do not retry the rejected result with a fabricated hash.",[19,77,79],{"id":78},"_413-output-too-large",[23,80,81],{},"413 output too large",[10,83,84,31,86,35],{},[14,85,30],{},[23,87,88],{},"rejected (output too large)",[10,90,91,93,94,97],{},[14,92,40],{}," stdout or stderr exceeded the server's per-artifact limit. The default ",[23,95,96],{},"MAX_ARTIFACT_BYTES"," is 10 MiB.",[10,99,100],{},[14,101,50],{},[52,103,104,107,110,117],{},[55,105,106],{},"Configure the model to emit concise findings rather than transcripts.",[55,108,109],{},"Keep progress output out of stdout when the runner supports a separate diagnostic channel.",[55,111,112,113,116],{},"Run the first-party agent with ",[23,114,115],{},"--redact",". It masks secret-shaped strings and caps stdout at 1 MiB with an explicit truncation marker.",[55,118,119],{},"Claim and run the slice again. A rejected oversized payload is not imported.",[10,121,122],{},"The server does not support presigned result uploads.",[19,124,126],{"id":125},"a-lease-expires-while-the-model-is-running","A lease expires while the model is running",[10,128,129,131],{},[14,130,30],{}," A running slice returns to claimable state, or two workers run the same slice.",[10,133,134,136],{},[14,135,40],{}," The lease reached its expiry time. The first-party agent requests a lease based on the largest configured timeout and sends best-effort heartbeats every 15–60 seconds while the process runs. Network loss can prevent heartbeats.",[10,138,139],{},[14,140,50],{},[52,142,143,150,153,156],{},[55,144,145,146,149],{},"Set ",[23,147,148],{},"timeout_seconds"," high enough for the model binding.",[55,151,152],{},"Keep the agent online when possible so heartbeat requests can extend the lease.",[55,154,155],{},"Let the original worker submit its result. A late result is accepted if no other lease completed the slice.",[55,157,158,159,162],{},"If another lease already won, the server returns ",[23,160,161],{},"202"," and stores the late output as a superseded provenance artifact without importing it twice.",[10,164,165],{},"Lease expiry requeues work; it does not automatically invalidate the original worker.",[19,167,169],{"id":168},"the-daemon-cannot-clone-or-fetch","The daemon cannot clone or fetch",[10,171,172,174,175,178],{},[14,173,30],{}," ",[23,176,177],{},"thespider-agent daemon"," logs a Git clone, fetch, or checkout failure before it claims slices.",[10,180,181,183,184,187],{},[14,182,40],{}," The daemon shells out to the local ",[23,185,186],{},"git"," command. It does not manage forge credentials.",[10,189,190],{},[14,191,50],{},[52,193,194,201,208,211,221],{},[55,195,196,197,200],{},"Run ",[23,198,199],{},"git ls-remote REPOSITORY_URL"," as the daemon's operating-system user.",[55,202,203,204,207],{},"For SSH URLs, load the correct key into that user's ",[23,205,206],{},"ssh-agent"," and trust the forge host key.",[55,209,210],{},"For HTTPS URLs, configure a credential helper or a token-bearing URL appropriate for your environment.",[55,212,213,214,217,218,35],{},"Confirm the campaign has both ",[23,215,216],{},"target_remote_url"," and ",[23,219,220],{},"target_commit",[55,222,223],{},"Restart the daemon after Git authentication succeeds.",[10,225,226,227,230,231,234],{},"The managed checkout lives below ",[23,228,229],{},"~\u002F.thespider\u002Fcheckouts"," unless ",[23,232,233],{},"--workdir"," overrides it.",[19,236,238],{"id":237},"a-process-exits-successfully-but-imports-no-reports","A process exits successfully but imports no reports",[10,240,241,243,244,247],{},[14,242,30],{}," The slice is completed, stdout exists, and ",[23,245,246],{},"imported_reports"," is zero.",[10,249,250,252],{},[14,251,40],{}," The parser did not find a complete marker-delimited JSON array, the array was invalid JSON, or every item failed report validation.",[10,254,255],{},[14,256,50],{},[52,258,259,262,265,268,274,277],{},[55,260,261],{},"Open the slice and note its output artifact key for operator correlation.",[55,263,264],{},"Run the command manually with the same prompt.",[55,266,267],{},"Confirm both opening and closing marker tags exist.",[55,269,270,271,35],{},"Confirm the first non-whitespace character after the opening marker is ",[23,272,273],{},"[",[55,275,276],{},"Validate the array as JSON.",[55,278,279,280,35],{},"Compare each object with the ",[281,282,284],"a",{"href":283},"\u002Fdocs\u002Freference\u002Frunner-contract","runner contract",[19,286,288],{"id":287},"the-opencode-runner-returns-early-or-keeps-a-session","The OpenCode runner returns early or keeps a session",[10,290,291,293],{},[14,292,30],{}," The runner produces empty output, times out, or reports that it kept an OpenCode session.",[10,295,296,298,299,302],{},[14,297,40],{}," The capture did not observe a complete result block before ",[23,300,301],{},"OPENCODE_CAPTURE_TIMEOUT",", or the OpenCode stream failed.",[10,304,305],{},[14,306,50],{},[52,308,309,312,318,325],{},[55,310,311],{},"Use the recovery command printed to stderr. It reads assistant messages from the retained session.",[55,313,314,315,317],{},"Increase ",[23,316,301],{}," while keeping it below the model binding timeout.",[55,319,320,321,324],{},"Confirm ",[23,322,323],{},"occtl"," can reach the configured OpenCode host and port.",[55,326,327],{},"Confirm the assistant output includes a complete marker block, not only prose that mentions the marker.",[19,329,331],{"id":330},"network-rate-limit-and-server-failures","Network, rate-limit, and server failures",[10,333,334,335,338,339,342,343,346,347,350,351,354],{},"The first-party agent retries network failures, ",[23,336,337],{},"429",", and ",[23,340,341],{},"5xx"," responses with exponential backoff and jitter. It does not treat ",[23,344,345],{},"409"," or ",[23,348,349],{},"413"," as transient. If retries continue, check ",[23,352,353],{},"\u002Fhealthz",", token validity, project scope, and the server logs.",{"title":356,"searchDepth":357,"depth":357,"links":358},"",2,[359,360,361,362,363,364,365],{"id":21,"depth":357,"text":25},{"id":78,"depth":357,"text":81},{"id":125,"depth":357,"text":126},{"id":168,"depth":357,"text":169},{"id":237,"depth":357,"text":238},{"id":287,"depth":357,"text":288},{"id":330,"depth":357,"text":331},"Diagnose claim, execution, result import, lease, and daemon failures","md",null,{},{"icon":371},"i-lucide-wrench","\u002Fdocs\u002Fguide\u002Ftroubleshooting",{"title":5,"description":366},"docs\u002F2.guide\u002F9.troubleshooting","PIwKRey8ILzFyAY0UHKS3obLv-9S8RIImnMejsCXw_w",[377,383],{"title":378,"path":379,"stem":380,"description":381,"icon":382,"children":-1},"How to configure a custom model runner","\u002Fdocs\u002Fguide\u002Fcustom-runner","docs\u002F2.guide\u002F8.custom-runner","Bind a local model command to TheSpider's prompt and result contract","i-lucide-terminal-square",{"title":384,"path":385,"stem":386,"description":387,"icon":388,"children":-1},"On-prem overview","\u002Fdocs\u002Fdeploy\u002Fonprem","docs\u002F3.deploy\u002F2.onprem","Compare TheSpider Cloud with the private single-tenant on-prem edition","i-lucide-server",1784724165141]