v2026.7.1
Security
- Bumped
joserfcto 1.6.7 (GHSA-wphv-vfrh-23q5, CVE-2026-48990, moderate). Withb64=false(RFC 7797 unencoded payloads), a JWS could carry a payload that skipped theJWSRegistrypayload-size limit during deserialization.joserfcis a transitive dependency (viaauthlib, which backs the MCP gateway's OAuth), so this is a lockfile-only bump; the MCP gateway and authz test suites pass unchanged.
Changed
- Bumped dashboard frontend dependencies:
@xyflow/svelteto 1.6.1,posthog-jsto 1.396.3,viteto 8.1.2,@sveltejs/kitto 2.68.0, andsvelteto 5.56.4. The production build is unaffected. - Migrated the dashboard to
js-yaml5. js-yaml 5.0 removed the CommonJS default export and thequotingTypedump option, soCognitionPanel.sveltenow imports{ load, dump }by name and dropsquotingType;@types/js-yamlis removed because v5 ships its own type declarations. One behavior change follows from v5's YAML 1.2 (CORE) load schema: in an editedrole.yaml, bareyes/no/on/offnow load as strings instead of booleans, and re-dumped strings use single quotes where quoting is required.
Added
-
initrunner tool new "<description>"scaffolds a custom tool from natural language. It generates a plain-Pythontype: custommodule plus a pytest stub using the configured model, AST-validates the source before writing (the module is never imported during scaffolding), retries once on a validation failure, and prints a paste-readytools:snippet. Generated functions default toasync def, take config and secrets through an injectedtool_configdict, and avoid sandbox-blocked imports.--outputsets the module name (and retargets the generated test's import to match). -
initrunner run <role> --devadds a developer REPL. It turns off streaming and the status spinner so abreakpoint()in a custom tool owns the terminal forpdb, and enables in-session tool hot-attach. -
In-REPL
/tool add <module>and/reload./tool addappends atype: customtool and rebuilds the agent in place (reloading an edited module), so a freshly scaffolded tool is callable on the next turn with the conversation preserved;/reloadrebuilds the agent after an edit torole.yaml. Both run through a newAgentHandlethat swaps the live agent under a lock and carries_template_values/_memory_store/_resume_contextonto the rebuilt agent. -
initrunner plan <role>predicts a run without calling the model. A new command that reports reachable tools (function-level via builder introspection), would-fire initguard policy decisions, applied guardrails, the sandbox that would engage, armed triggers, and a heuristic token/USD cost. Supports--prompt(sizes the cost estimate and surfaces the prompt'stool_searchsubset),--no-introspect(type-level only),--no-sandbox-probe, and--json. It never raises: a tool whose builder fails or opens a connection is reported at type level with a caveat.
Fixed
- Async custom tools wrapped by the audit-hook sandbox stay coroutines.
build_custom_toolsetnow wraps anasync deftool with an async sandbox wrapper instead of the sync wrapper, which previously returned an un-awaited coroutine. - Cron cost projections work in
cost estimateandplan.estimate_role_cost_syncconstructedcroniterwithout a timezone-aware base, soget_next()returned naive datetimes that failed the 24h firing-window comparison and silently dropped the daily/monthly estimate; it now passes a UTC base.