Platform (Studio)
- Agent runs graded by configured evaluators now record a weighted score and pass/fail result, visible in the runs feed and run detail responses. Previously only workflow runs carried an evaluator verdict.
- Email addresses for a workflow are unique across your whole organization, not just the workflow you are editing. Picking one that is already taken used to fail with a server error. It now tells you which workflow already receives email at that address, or that the workflow you are editing already has it, so you know what to do next. Duplicate folder names and duplicate workspace invites also report clearly instead of failing.
ai.extractwithgrounded: trueno longer succeeds silently without producing grounding. When the grounding pass cannot run (missing OpenAI credentials on the worker, or a grounding model that is not an OpenAI model) the step now fails with an error that names the exact misconfiguration. When the pass runs but produces no field grounding, the output carries an explicit degraded marker instead of nothing. The grounding model picker in the workflow builder now only offers OpenAI models, matching what the grounding pass supports.- Agent training: when a training session fails to open, the dashboard now shows what went wrong instead of a generic error. The message names the setup step that failed, and a session blocked by secrets that cannot be decrypted says so and points at the agent settings. A session whose setup fails partway through no longer opens on an incomplete workspace.
- Self-hosted deployments can now sign users in through corporate single sign-on services that use a redirect-and-token flow instead of OIDC. The new protocol supports mutual TLS for the server-to-server exchange, maps directory groups to EigenPal roles (admin, member, viewer) on every SSO sign-in so the directory stays the source of truth, and links existing password accounts by email so nobody loses access when SSO is turned on. Startup validation rejects unsafe callback origins and provider identifiers, while malformed or oversized identity responses fail closed.
Public API
- Syncing an automation immediately after a release no longer fails with HTTP 500 while the new release tag propagates. The sync endpoint now reports a retryable status with a clear message when the Git source is momentarily unavailable.
- Fixed single-experiment results export returning HTTP 400 whenever the
includeTracequery flag was omitted.workflow experiment resultsand the auto-pull at the end ofworkflow experiment watchnow download per-evaluator results in JSON and CSV again. - Creating an email trigger address that is already in use now returns 409 with a message naming the workflow in your organization that already uses it, instead of 500.
CLI
- Agent example runs now report a real evaluator verdict in the CLI:
eigenpal run agents.<name> --example <name> --waitwaits for the verdict, prints the weighted score and pass/fail result, and--fail-on-mismatchexits non-zero when the run fails its evaluators, matching the existing workflow behavior. When no evaluators are configured, the CLI says so instead of silently reporting nothing. agents secretsis now one command group withlist,set,unset,import, andexportsubcommands (agents secretremains as an alias). The newagents secrets listshows the secret names and descriptions declared in the package without ever printing values. Previouslysetandunsetlived under a separate singular command andsecrets listfailed with an argument error.agents syncretries automatically with a short backoff when the server reports the Git source as temporarily unavailable, so the sync right afteragents releasesucceeds without manual retries.agents dataset validatenow checks the same layout the server accepts onagents dataset push: example folders underexamples/, file inputs referenced frominput.jsonwith\{ "$file": "input/..." }, andexpected.jsonoptional. Previously the local validator demanded a different layout that push would then reject, so no dataset could satisfy both. Validation errors now point at the exact rule that failed, including a hint when example folders sit at the dataset root instead of underexamples/. When the agent package carries an input schema, each example’s full input object is validated against it (required fields, unknown keys, and value types, with\{ "$file": ... }references accepted for file fields), so inputs that would fail at run start are caught locally. Failure-expected examples (expected.jsonwith$error) are rejected for agent datasets, since agent runs are evaluated only when they complete.workflow experiment run --jsonnow includes the documentedbatchIdfield, so scripts piping intojq '.batchId'get the real experiment id instead of null.workflow experiment statusnow fails with a clear message when the batch has no executions (for example when a bad batch id is passed) instead of reporting a misleading “0/0 terminal” success.runs tracenow works for workflow runs as well as agent runs. Workflow runs return execution phase and step trace events; previously the command always returned HTTP 404 for workflow run ids.workflow pullno longer reports “no published version yet” for workflows that have a current published version. The command now reads the version payload the server actually returns, so freshly pushed workflows pull cleanly.
Infrastructure & processing
ai.extractwithgrounded: trueno longer succeeds silently without producing grounding. When the grounding pass cannot run (missing OpenAI credentials on the worker, or a grounding model that is not an OpenAI model) the step now fails with an error that names the exact misconfiguration. When the pass runs but produces no field grounding, the output carries an explicit degraded marker instead of nothing. The grounding model picker in the workflow builder now only offers OpenAI models, matching what the grounding pass supports.- Runs: fixed a rare race between starting a run and a worker picking it up that could make the run fail to start, or leave a run that was already executing reported as still queued. Starting a run and picking it up are now correctly serialized, so run status always reflects what is actually happening.
- The
categorical-missing-enumschema quality warning no longer fires on unbounded identifier fields (such as invoice numbers, purchase order references, or SKUs) or free-text fields (such as payment terms and notes) whose descriptions happen to contain example lists. Descriptions introduced with “e.g.” or made of identifier-shaped examples are treated as illustrations, not closed value sets, so the warning stays high-signal.