Troubleshooting#
Start with the failing command, config path, run name, and first error. Save the run’s records before restarting.
check --no-probe inspects configuration and component loading; the ordinary check also runs one task and
can make paid calls.
Symptom |
Inspect first |
Action |
|---|---|---|
|
Active Python environment |
Activate it and run |
Unknown key or wrong file path |
Config spelling and config directory |
Compare the field reference; resolve paths relative to the YAML |
Template not found |
|
Use a registered id such as |
GEPA/SkillOpt cannot import |
Installed requirements and environment |
Install |
Learner authentication fails |
Learner endpoint, key variable, backend CLI |
Verify the configured variable is set without printing it; authenticate the selected CLI |
|
The model’s backend and the caller’s dialect |
Codex speaks the Responses API only, Claude Code the Messages API only: bind a backend that serves it (vLLM, SGLang, Fireworks, DeepSeek) or a translating proxy; |
Actor works but learner fails, or conversely |
Separate actor/learner configurations |
The pipeline owns acting-model settings; |
bwrap missing or namespace denied |
Linux runtime and namespace policy |
Install bubblewrap and use an environment permitting its namespaces; see Installation |
Probe fails on |
Pipeline’s baseline branch |
Make no-adapter execution valid; do not assume every call has an adapter directory |
Invalid split or no test tasks |
Task ids and split files |
Ensure ids exist and splits are disjoint; |
Adapter remains unchanged |
Learner status, feedback, learnable paths |
Read the step report; a valid no-op, perfect batch, rejected candidate, or validation gate can explain it |
Unexpected files disappear |
Specification-check issues |
Add intended paths to a new template’s learnable rules before training |
Score does not rise after an update |
Timing and held-out results |
The current step’s score precedes its update; inspect the next rollout and separate evaluation |
Budget seems too low or unknown |
Usage reporting and model prices |
Include external calls and candidate tests; unknown cost is not zero |
Timeout at epoch end |
SkillOpt slow update or long agent session |
Inspect method work and align per-session and Trainer timeouts |
Run already finished |
|
Choose a new run name; do not expect a completed run to resume |
Wrong run evaluated |
Run-name/output overrides |
Use the same overrides on train and eval; inspect the returned commit |
Plugin conversion refuses context or roles |
Target capability and |
Use a supported host or workspace deployment; use |
Host cannot find adapter tools |
Generated command, Python, source directory |
Keep workspace deployment’s source paths available; check the host’s MCP logs and tool imports |
Streaming result differs from an aggregate eval |
Window order and checkpoint selection |
Use the recipe’s evaluator and benchmark metric |
If training fails midway#
Read steps.jsonl to find the last completed boundary, then inspect that step’s report and the process error.
An Evolver failure can be recorded and training can continue with the previous adapter; a process crash may leave
the run unfinished. Recovery explains which state is restored.
Do not infer rollback of an external database, service, or API charge from adapter rollback. Those belong to the task integration. Preserve evidence before deliberately restarting a stream.
If the run succeeds but performance is worse#
Check that the pipeline loads the adapter it receives, the learner sees informative feedback, and the judge
implements your intended objective. Compare none, root, and final under the same acting settings.
Inspect raw task errors before changing the learning method. A specification check validates files rather than
task quality; Evaluation covers a defensible comparison.
Reporting an issue#
Include the framework commit/version, OS and Python version, method, command, config with credentials removed, first traceback, and relevant step status. A small task/pipeline/judge reproducer is more useful than an entire run. Review trajectories and feedback for private task content before sharing them.