Nhật ký thay đổi
Mọi phiên bản Kurahi, mới nhất trước. Tạo từ tệp CHANGELOG.md trong kho mã, bằng tiếng Anh.
Docs: https://kurahi.com/docs
2.3.0 — 2026-10-29
Kurahi 2.3 turns the Business edition into functional packs over your existing systems, adds quotations and purchasing, cases that span departments and data governance, and lets Autopilot reason with any OpenAI-compatible model API or a local model, so routines can run without a command-line model and without content leaving the network.
Autopilot
- Reasoning through a model API (
backend: api): a routine names<provider>/<model>from the registry ormodels.providers(Sakura AI Engine, a Qwen endpoint, IBM watsonx.ai through an OpenAI-compatible gateway, a local Ollama …). The call carries no tools; a reply with tool calls, cut off at the token limit, stopped by a content filter or refused is discarded with the reason. HTTPS is required except for a model on this machine or a private network; redirects are refused and API keys never reach run reasons. - Local models on modest hardware: a local Ollama model is asked for a context that fits the
gathered content, and an answer whose prompt filled the context is discarded instead of resting
on half of the evidence. Calls wait as long as the routine’s
timeoutSecondsallows (up to 900 s), not a fixed 300 s. - A routines file that names a reasoning backend the engine cannot run, or
apiwithout a<provider>/<model>, is refused when it is loaded, not at the first run.
Business edition
- Quotations (見積管理): quotation requests become cases with a 見積書 in Word and Excel. Unit prices come from the company price list (CSV, UTF-8 or Shift_JIS); Kurahi computes every amount and the consumption tax per rate, rounded once per rate per document (インボイス制度). Items not in the price list are 【要確認】. A quotation with open items can be released only as a provisional estimate (御見積書(暫定)); a final quotation needs every item priced or explicitly taken out of scope with a reason. Revisions (R2, R3 …) name the version they supersede, and approval is bound to the exact files. Sending is always a person’s action. Price lists can also be Excel workbooks (.xlsx, read with a strict XML parser); a price list older than the company’s limit is flagged and needs a person’s recorded confirmation.
- Purchasing: keep a case’s supplier quotes, compare them, record a person’s supplier choice (passing over the lowest quote needs a reason) and draft each chosen supplier’s purchase order once. Supplier quotation sheets (CSV or .xlsx under quotes/) are read into the comparison, and each recorded quote and purchase order keeps the sheet it came from.
- Functional packs: Employee requests, Contracts and obligations, People operations and Management oversight join the Sales quotation pack, each with forms, routes, checks and JA/EN guidance. A published catalogue lists every pack’s status and limits.
- Cases across departments: a linked case plans steps in several departments (for example onboarding), tracks dependencies and completion, and escalates stuck cases. A pack’s worksheet can be started as a linked case from the console, with every step and dependency shown first.
- Hand-offs to other systems: each hand-off of an approved case is tracked from approval to confirmation, reconciliation and closure, with evidence at every step; closure says what was achieved (for example, hand-off completed and payment not verified). Only a person can attest that a payment settled, under separation of duties.
- Notifications: people are notified in the console when a case newly concerns them (awaiting their decision, delegated, escalated, a linked step opened); the morning brief counts unread notices.
- Delegation: an approver can withdraw a delegation before the delegate uses it.
- Document previews: reviewers can read the text of attached PDF and Office documents; the text is dropped if the file changes.
- Faster work queues: lists and statistics read an index instead of every item, for large queues.
- Overrides of checks marked “provisional” release a provisional result only, never a final approval.
Data governance
- Retention sweeper with signed manifests, legal holds, eDiscovery export, a My Number (マイナンバー) guard on outbound tools, and data subject requests (APPI).
Console
- Business notifications panel, supplier-quote review, evidence verification beside every history event, Autopilot writes kept safe across navigation, and Industrial readiness wording, in English and Japanese.
Fixes
- Project files reached through a symlinked folder (macOS /var, /tmp) are accepted when their real path is inside the Project.
- Price lists refuse oversized cells and duplicated item codes instead of guessing.
Detailed changes
-
Business: supplier quote comparison and purchase order drafting accept up to 20 suppliers and 200 items, the same as a stored procurement case; a case refuses item codes, descriptions and supplier names longer than those tools accept, so every recorded case can be drafted.
-
Business: add a bilingual People operations closure worksheet covering every required task, exception decisions and re-review after checklist changes; reviewer notes retain policy and source versions. This is a manual workflow.
-
Business: require a human-supplied source version for Contracts register and review requests, with bilingual decision and re-review guidance. This starter does not verify document versions or migrate existing Project policies.
-
Console: review persisted supplier quotes and explicitly record a supplier choice with revision checks, a reason for higher quotes, and English/Japanese refusal guidance.
-
Console: show more retained notifications in batches of 50 and keep loaded rows visible during refresh; confirmed read acknowledgements survive refresh failures, with stale actions disabled.
-
Console: open a notification’s item without marking it read or changing department filters; pending edits and writes block navigation.
-
Console: add a Project-wide Business notification panel with unread counts, English/Japanese reasons and explicit mark-read actions; stale or unavailable inboxes never appear empty.
-
Console: distinguish unavailable linked-case snapshots from confirmed empty lists in the morning brief; truncated empty lists no longer claim there are no cases (English and Japanese).
-
Work queue: a stored in-app notification with a missing or malformed field (read time, reason, revision, ids, times) now makes the inbox unreadable instead of silently dropping out of the unread count; the morning brief reports it as unavailable.
-
Work queue: a linked case step reaching done or cancelled notifies the parent’s requester in-app when it opens the next step, completes the case or blocks it (
linked_step_ready,linked_case_complete,linked_case_blocked, withchildId, andstepKeyfor the step that opened). Two steps finishing at the same moment report a complete or blocked case, or the step they both opened, once, and never miss it. -
Console: show unread in-app notification counts in the morning brief in English and Japanese; distinguish unavailable snapshots from zero without marking notifications read.
-
Work queue: every transition stores in-app notification records for the people it newly concerns (awaiting, delegated, delegation withdrawn, escalated, decided), readable through
workitems.notifications.listand marked read explicitly withworkitems.notifications.markRead. Ids and reasons only; members known only through a group are not notified yet; no mail or chat delivery. -
Work queue: an approver can withdraw their own delegation on the current stage before the delegate uses it (
workitems.withdrawDelegation, person only, audited with evidence; refusalsno_delegation,already_approved). -
Console: use heading punctuation consistently for the Japanese unavailable-page title.
-
Console: describe current page, file and export availability without outdated release promises in English and Japanese; refresh Industrial payroll captures.
-
Console: align artifact version and comparison selectors with displayed content on initial render.
-
Industrial: explain analysis availability and setup requirements in English and Japanese; add fictional payroll visual examples and bilingual page-copy handoff.
-
Business: add a Management oversight starter with bilingual manual workload, exception and outcome report worksheets and precise statistics definitions.
-
Console: explain Autopilot writes still awaiting confirmation after 30 seconds in English and Japanese, keeping duplicate changes blocked across navigation.
-
Console: keep Autopilot writes locked through navigation and reconnects until they settle, then refresh the current view without restoring stale notices or drafts.
-
Console: distinguish verified Autopilot evidence deletion records from live evidence, with English/Japanese notices and safe verification failures.
-
Console: show verification results beside each Business history event, including verified deletion records and failed or unavailable evidence, in English and Japanese.
-
Console: open originating Autopilot runs from Business items, verify linked item membership, and distinguish verified deletion records from available event evidence in English and Japanese.
-
Business: let authorized people report serious errors directly from routine-created item details, with explicit reasons and English/Japanese guidance.
2.2.0 — 2026-10-25
The Business Edition and Autopilot release: 稟議 approval routes and business connectors, routines that carry repetitive work end to end in every edition, deeper Industrial analysis, a Scholars research workspace, enterprise identity and the enterprise package. Upgrade notes: Kurahi 2.2.0.
Business Edition
- Departments: 15 department workspaces and six SME groups with scoped queue navigation, server-side search and status filters; the Company operations template provides every department queue. Department conversations open from the console into agent chat with persistent context and safe session switching.
- Approval routes (稟議): ordered stages with role, named or department approvers, minimum approvals, due hours, send-back behaviour, conditional stages, delegation and escalation (audited, with evidence). Requester ownership,
mineandawaitingMeviews, safe document previews, draft version diffs and queue statistics (workitems.delegate|document|draftDiff|stats). Templates gain a three-stage finance route and a three-quote procurement option. - Control UI: create, edit and submit expense requests with pinned revisions and duplicate-save protection; approve, send back and cancel with written reasons; preview the exact pinned draft (Project, version and SHA-256 checked); verify evidence on request; staged route progress with deadlines and overdue and escalation markers (Japanese and English).
- Email intake: a mail message becomes a work item by reference (connector, message id, bounded headers; never the body), idempotent per message. Risk flags:
suspected_fraud(also raised for a proposed bank-detail change) andmalicious_attachmentblock approval and completion until a person clears the flag with a written reason. - Connectors, all off by default: kintone, freee 会計, マネーフォワード クラウド請求書, SmartHR, LINE WORKS and Box (read-only, or read-only by default), with API-token, assertion and confidential OAuth client credentials in the connector kit. Microsoft 365 adds draft-only Outlook replies, Project files attached to drafts, uploads to the OneDrive app folder and a Graph delta-query mail watcher for triggers. The catalogue shows a connector as Active once its connection probe succeeds.
- Office documents: the bundled
officeplugin (off by default, Project-scoped; enabled by the Business templates) writes PowerPoint, Word and Excel files from structured specs into the Project, with native editable charts, speaker notes and a 20 MB cap. No new dependencies.
Autopilot
- Routines engine for every edition (
autopilot.yamlper Project, fail closed): gather through declared read tools, reason with a tool-less model backend, act only through the engine’s authorization. Autonomy levels L0 (observe), L1 (prepare), L2 (act internal) and L3 (act externally within policy). L3 sends need a person-made standing approval that is scoped to recipients and template, expires and has a daily maximum; it is verified again at send time. Every run is a job with a signed evidence bundle. Starter routines ship for every edition. - Triggers: work item, deadline, file and mail events next to schedules, with debounce, an hourly cap, one queued follow-up and a loop guard.
- Behaviour watchdog (runs above baseline, refusal bursts, unexpected actions or repeated tool calls pause the routine and escalate) and a global stop (
autopilot.stopAll/autopilot.startAll, person only, and the<KOLO_HOME>/autopilot/STOPfile). - Earned autonomy: the engine proposes a level per routine from recorded corrections; a person accepts or declines with a written reason, never above the routine file’s level and never to L3 without a standing approval. A watchdog trip or a reported serious error demotes the routine one level. Every change is audited and sealed as evidence.
- Morning brief: a per-person brief from recorded data only (work handled, documents, decisions, flags the person may clear, proposals, commitments, problems), in the console and as an Outlook draft or a file. Never sent automatically.
- Routines may read approved company knowledge from read-only folders, write Office documents and attach them to reply drafts; a message any work item already covers is never acted on twice.
Industrial Edition
- Java and databases: JPA mapping in depth (relationships and join tables compared with DDL keys, inheritance strategies, secondary tables, embedded and mapped-superclass fields, element collections, map keys and order columns, enumerated and temporal storage), MyBatis mapper XML as table access, schema-qualified tables kept apart.
- Stored procedures: DB2 SQL PL and PL/SQL routine bodies, PL/SQL package bodies split into member routines, and calls linked to routine nodes from Java, Oracle calls without
CALL,@NamedStoredProcedureQueries, and COBOL and PL/IEXEC SQL CALL, so table impact reaches their callers. - PLC engine: IEC 61131-3 Structured Text, and FBD and LD networks in PLCopen XML exports, with a POU and I/O inventory and a PLC section in the design document. IL and SFC bodies and vendor ladder exports are listed as not read. Source text only; never touches a controller.
- Change detection:
legacy_changescompares the fact index with a stored baseline (programs, copybooks, jobs, tables, columns, routines and their edges, withpath:lineevidence);legacy_baseline_advancepromotes it. The nightly starter routine runs only when something changed and also after a new source drop. - Design documents (設計書) as Word files (
output_format: "docx"), never overwriting an earlier one. The Industrial template gains analysis, design-document, modernisation and quality work queues.
Scholars
- New bundled
scholar-sourcesplugin (off by default, enabled by the Research & academic template): search, records, citation check, open-access PDF fetch through the attachment intake and grant deadlines over arXiv, OpenAlex, Crossref, PubMed and doi.org, keyless and within each provider’s rate limits. - The template becomes a working research workspace: work queues for literature, writing, grants and data, profile and grant forms, and three L1 routines: a weekly literature watch with a Word digest, a citation check of drafts and grant deadline reminders. A missing fact is marked 【要確認】 in place, never invented.
Security
- Enterprise identity: OIDC (authorization code with PKCE; Entra ID, Google, Okta, Keycloak) and SAML 2.0 (signed assertions, audience, recipient, time window, replay and signature-wrapping checks) sign-in for people, SSO sessions with lifetime, idle timeout and logout, SCIM 2.0 provisioning (deactivation ends sessions at once), departments and teams, eight roles mapped to gateway scopes and IdP group mappings.
ssoRequiredrefuses token logins of people except an audited break-glass. Hardened after three rounds of adversarial security review: personhood from the authenticated credential only, account linking by verified e-mail within one provider, fail closed when the configuration does not load, no session token in URLs, periodic re-evaluation of SSO sockets, Project access applied to evidence reads. Off by default (gateway.identity). - Attachment intake: quarantine, a static policy (executables, scripts, macros, encrypted files, nested archives, zip bombs, document allow-list), a malware scan with ClamAV or Microsoft Defender that fails closed (
security.attachments.requireScan, on by default) and text extraction in a bounded child process. Refusals are audited and sealed as evidence. - Enterprise profile: every extension is classified enterprise (23), optional (11) or excluded (25) in
src/packaging/profiles/enterprise.json. The enterprise package ships enterprise-tier extensions only; underKURAHI_PROFILE=enterpriseorprofile: "enterprise"the loader refuses excluded plugins, requires an explicit opt-in for optional and unclassified ones and auditsplugin.refused; Slack defaults to an allow-list; enterprise installs update only to-enterpriseassets. - Console responses carry a Content-Security-Policy (per-response nonce,
frame-ancestors 'none'),X-Content-Type-Options: nosniffandReferrer-Policy: no-referrer. - Gateway: the client address is resolved from the right of
X-Forwarded-Forpast trusted proxies only; a refused shared secret no longer leaves an owner principal; a config that fails to load answers 503 instead of crashing; tools invoked through the gateway get the Project’s scope and path checks; device pairing approvals and token rotation cannot grant more than the approver holds.
IBM watsonx interoperability (Preview)
- watsonx Orchestrate can call Kurahi (A2A 0.3.0 server with
X-API-Key, an OpenAPI 3.0 ask endpoint, the legacy analyser as a remote MCP toolkit behind a TLS proxy) and Kurahi can call allow-listed Orchestrate agents (watsonx-orchestrateplugin).watsonxmodel provider with IAM token refresh (Tokyo region by default). Governance spans over OpenTelemetry for agent and autopilot runs. Read-only watsonx.data SQL and allow-listed Db2 REST services (ibm-dataplugin). - Everything follows IBM’s published APIs and is off by default and outside the autopilot. See IBM watsonx.
Packaging
- Enterprise runtime bundles per OS (
kolo-2.2.0-<target>-enterprise.*) and an enterprise npm tarball for private registries next to the standard packages; optional plugins as separate archives (kurahi-<id>-2.2.0.tgz, WhatsApp as before). - No tag without a green CI run on Windows, macOS and Linux for the exact commit; CI builds and checks the enterprise bundle on all three.
- Extension directories with content but no plugin manifest are flagged; default exports of shimmed modules are read from the syntax tree.
Fixes and other changes
- Packaged installs now load every bundled plugin (Microsoft 365, Gmail, Entra ID, A2A, legacy analyser and others).
- Ransomware detection: a ransom-note name on a change event counts as a note (macOS coalesces create and write events).
- Legacy MCP server: refuses a symlinked audit file on Windows too.
- OpenTelemetry diagnostics: the exporter’s resource is built with the current OpenTelemetry API (
new Resource(...)no longer exists as a value in@opentelemetry/resources2.x). - Connectors: a sign-in whose redirect port is taken names the port;
KURAHI_DEBUG_CONNECTORS=1shows the raw error on the administrator’s own terminal. - Work queue: the intake tool stays remote when
gateway.modeisremote. - Control UI: distinct, localised accessible names for Industrial assessment and pack buttons.
- Docs (English and Japanese): Autopilot, Business work queue and 稟議, business connectors, Office documents, attachment intake, enterprise identity, enterprise profile, Scholars and IBM watsonx.
2.1.0 — 2026-10-24
The Industrial Edition release. Kurahi Desktop 0.4.0 ships with it.
Breaking: WhatsApp is a separately installed plugin
- The WhatsApp channel is no longer in the default npm package, prebuilt bundles or installers: its WhatsApp Web library depends on
libsignal, which is GPL-3.0. Install it withkurahi plugins install kurahi-whatsapp-2.1.0.tgz(attached to the release; the install fetches its dependencies with npm), pin it, enable it and restart the gateway; see the WhatsApp channel page. Without it the runtime starts normally, WhatsApp commands say the plugin is not installed, and existingchannels.whatsappsettings load unchanged. The release SBOM shows the default runtime withoutlibsignal.
Industrial Edition
- Legacy analyser (deterministic, no model in the loop): COBOL with copybooks and JCL, Java (classes, methods, inheritance, resolvable calls, Spring and JPA annotations, table access), SQL DDL (tables, views, indexes, columns, keys; ANSI, DB2, Oracle and PostgreSQL basics), FORTRAN (fixed and free form, COMMON, INCLUDE, calls, file I/O) and PL/I (procedures, structures, files, EXEC SQL, ON-units). Every fact carries
path:line; what the analyser cannot read is reported as a gap, never dropped silently. - Cross-program knowledge graph across languages: CRUD facts per table, call and data impact, graph queries.
- Design documents (設計書) generated from code, with Java and SQL sections, and a modernisation wave plan proposed for human review.
kurahi legacy mcp --root <project>: the analyser as an MCP server for the engineer’s own editor (VS Code, Eclipse-based tools), read-only and scoped to one folder.- Modernisation tools in the legacy-analyzer plugin, enabled per Project rather than for the whole gateway; the Industrial Project template routes each language to its engine.
- Industrial workbench in Kurahi Desktop: Projects with permission modes (参照 read / 計画 plan / 実行 act), engineering and industrial capability packs, an outputs (成果物) panel with verifiable export hashes, and a connector catalogue that shows only what is really connected.
- Project-scoped plugins: a plugin can be enabled for one Project only.
- Document requests: in an Industrial Project, the Assets view prepares a design document (設計書) or wave plan request as a chat draft for that Project, in Japanese or English, for the operator to review and send; workspace manifests point at the shipped Industrial, Business, Research, Education and Professional templates.
Work Console
- Governed terminal: a gateway-owned terminal per Project, off by default. Each line is checked before it runs (Project mode, destructive-command guard, path guard, risky-construct classifier); plan mode and act mode with the new-installation setting wait for an explicit approval; approved lines run in a clean shell without inherited tokens; every command produces a diff and an audit entry. Folders a Project marks read-only cannot be changed from the terminal in any mode. Optional container sandbox (
console.terminal.sandbox: "required"). - The desktop terminal connects to the broker with once-only approvals, bounded output, replay on reconnect and recovery of lost sessions.
- Push-to-talk voice (Japanese and English), off by default and local-first: the transcript lands in the composer for the operator to edit and send. Consequential actions are never approved by voice. Gateway methods
voice.start|audio|stop|speak|cancel.
Business Edition (preview)
- Governed work queue: work items with policy checks, approval records, history and evidence (
workitems.*gateway methods and theworkitems.changedevent), and a read-only review view in the Control UI (Japanese and English). - Business connectors for Microsoft 365, Gmail and Microsoft Entra ID, off by default (OAuth with PKCE or device code, sanitized read-only status in
connectors.status). The catalogue shows a connector as Active only after a live probe succeeds. - Business Project templates: 総務, 人事, 経理, 購買.
Security
- Path checks for the memory provenance store, integrity-protected folders and project folders now resolve symlinks through the nearest existing folder, so protected locations reached through a symlinked path (for example macOS temporary or home folders) are recognised.
- Supply-chain lock for skills and plugins: signed lock file, digests and a pin-time scan, verified at load.
kurahi skills pin|verifyandkurahi plugins pin|verify; agents cannot pin. Enforced on new installations. - Memory provenance: memory written by agents is tagged with its origin, untrusted writes are quarantined, and recalled memory is marked by trust.
memory.provenance(off|warn|enforce) andkurahi memory quarantine list|show|approve|reject. - Signed agent messages: per-agent Ed25519 keys and an owner-signed key registry; inter-agent messages,
sibling.sendand queued sub-agent announces are signed and verified, with persistent replay protection and an access re-check on receipt.agents.messaging.signing(off|warn|enforce). - Secure defaults for new installations (credential isolation, exec sandbox, exec approvals, supply-chain lock, memory quarantine, message signing); existing installations keep their settings and get a warning from
kurahi doctorand at startup. - Exec: the destructive-command guard covers every exec path; exec never runs unprotected when a sandbox is required, and a sandbox failure refuses the command; the exec host comes from configuration, never from the model.
- Release check: the build fails if identifiers of a private deployment would ship in the package.
- Policy path rules:
~/indata.neverRead/data.neverWritenow means the operating-system user’s home (it was matched against the state directory, so the starter’s~/.ssh/**did not protect~/.ssh); calls that use thefile_pathalias ofread,writeandeditare checked likepath; the starter policy written bykurahi init/kurahi policy initkeeps file tools out of<KOLO_HOME>/secretsand away from writingpolicy/,kolo.jsonandaudit/. Existing policies keep their lists: add the entries and runkurahi policy sign(see Secure defaults). sibling.sendkeeps file-inbox writes insidesibling-chat/; the idempotency key can no longer steer the file name or add front-matter fields, and the inbox file records whether the sender’s signature was verified.- Dependency updates for advisories in production dependencies (
pnpm audit --prod: 258 findings to 15, none critical in the gateway’s own request paths): tar 7.5.22, ws 8.22, undici 7.30, hono 4.13, @hono/node-server 1.19.15, axios 1.20, protobufjs 7.6, @modelcontextprotocol/sdk 1.32, sharp 0.35.5 (libvips, libheif and librsvg fixes), markdown-it 14.3.3, yaml 2.9, dompurify 3.4, fast-xml-parser 5.7, proxy-addr 2.0.8, qs 6.16 and others; tokio 1.54.1 in Kurahi Desktop. - Release artefacts carry a CycloneDX SBOM for the runtime and the desktop app (
pnpm sbom). - Docs: OWASP Agentic Top 10 status page and agent-specific controls in the security overview.
Interop
- Agent2Agent (A2A) protocol plugin: a server (off by default) and client tools; content received over A2A is labelled as external.
Fixes and other changes
- CLI: options given after a
kurahi gatewaysubcommand reach that subcommand.kurahi gateway run --port 18995was ignored when the config setgateway.port(the parentgatewaycommand consumed--port); the same applied to--bind,--force,--tokenand--passwordonrun,install,status,probeandcall. - Startup: a fresh gateway starts in about 5 seconds (channel SDK modules and protocol validators load on first use, plugins share the plugin SDK natively); the gateway logs startup phase timings, and
kurahi debug profilecaptures a CPU or heap profile of a running gateway (admin only, audited). - Gateway: a WebSocket connection over the per-address limit is closed with 1013 and a reason (“retry in Ns”) instead of a bare disconnect.
- Gateway health: an installation that uses only local models is no longer reported as missing a credential.
- Cron: deterministic pre-step for isolated agent turns (
payload.preExec, withpinHead), per-job system prompt mode (payload.promptMode),postToMainMode: "none", and timed-out or aborted turns are reported as errors. - Evidence: logs left running by a stopped process are sealed as interrupted, under a per-job lock with an owner-checked release.
- Voice: a cancelled or timed-out stop always ends the session; engine writes are serialized and lost audio is never acknowledged.
- Terminal: a replay cursor newer than the session’s last event is refused.
- Skills:
allowBundled: []now allows no bundled skill (it allowed all); a snapshot built under another skills configuration is rebuilt. - Compaction: the reserve is clamped to half of the context window, and
kurahi doctorwarns about larger settings. - Legacy analyser: never reads Kurahi’s own
.kurahistate folder; a commentedENDno longer closes a routine;ALTER TABLEedge cases (guards, duplicates, rejected actions) are handled without partial effects. - Gateway: the experimental
gateway.v3.biologyflag is removed. Configs that still set it load unchanged and the key has no effect;/metricsno longer hasbiology_*gauges,kurahi health --jsonno longer has abodyfield, and the Control UI overview no longer shows the “Human Prompts” card. Withgateway.v3.health,/healthreportsreadiness: "consciousness_ready"only when v3 dispatchers are registered, and thev3block carriesdispatchers.count. - Control UI: the unmeasured 99.99% availability headline now reads “Not yet measured”.
- Eval: scorecard version 3 records the subject and judge models.
- Docs: Editions, Industrial modernisation, Work Console, voice, A2A, connectors and the Business work queue (English and Japanese).
2.0.3 — 2026-10-19
- Evidence:
approvalevents (every human approval decision, with the approver), policy and inventory digests injob.start, declared outputs and a cost snapshot injob.end. - Workflow Evaluator (preview): signed acceptance specs, deterministic checks with security gates kept out of the quality score, offline replay with simulated tools, signed scorecards (
kurahi eval spec|run|report), reliability across repeated runs (--repeat k: pass^k headline, pass@k, gates in all attempts) and failure taxonomy tags. Bundled example with fictional data. - Workflow Evaluator: correction effort.
kurahi eval review <run> --task <id> --minutes-review N --minutes-fix M --accepted <as-is|edited|rejected> [--diff-from <file> --diff-to <file>]records reviewer, review and fix minutes, a line-level diff size and the verdict, and re-signs the scorecard (superseded version kept underrevisions/). Scorecards report correction effort per task and per run (median and p90 minutes, share accepted unchanged) next to pass^k; specs can sethumanReview.targets. Scorecard version 2; version 1 scorecards still verify. - Docs: vendor-specific model and authentication recommendations removed (security guide, FAQ, getting started, wizard, authentication, models concept, provider list, Venice and local-model pages). Guidance is now neutral: prefer current, instruction-hardened models for agents with tools, check the provider’s published safety evaluations, and see KODA-tested results.
- Docs: “Ransomware shield” is now named “Ransomware detection” in the documentation (the
/shieldpage, policy keyshieldand CLI commands are unchanged). - Docs: claims made precise — state persists across restarts but an interrupted job is not resumed; the ransomware shield is detection, not complete protection; evidence replay reconstructs a recorded job and does not re-run it; builds are unsigned (verify
SHA256SUMS.txt); capabilities list external agent CLIs and credential isolation. - Snapshots:
snapshots.required(true, or a list of path globs) refuses an edit when its recovery snapshot cannot be captured (store failure, file too large or unreadable), with an evidence signal and an audit event. Default unchanged: a failed snapshot never blocks an edit. - Security: enterprise credential isolation.
auth.isolation: "explicit"withauth.grants(agent id → profile ids) stops agents inheriting, merging or falling back to the main agent’s credentials; each agent sees only the profiles granted to it. The default stays"inherit"for compatibility. - Security: external agent CLIs no longer run with their permission checks bypassed by default.
claude-clinow runs with--restricted(host Claude Code settings and their allow rules are ignored),--toolslimited toallowedTools(defaultRead,Grep,Glob; none and--strict-mcp-configfortools: "none") and--permission-mode dontAsk; verified live that no file is written and no command runs,codex-cliwith--sandbox read-onlyfortools: "none"andworkspace-writefortools: "native", plus--ignore-user-config,--ignore-rules,/tmpand$TMPDIRexcluded from the writable roots (live test: plain workspace-write let commands write to temp folders outside the workspace) and, on Windows,-c windows.sandbox=elevated;exec resumenow gets these flags before the subcommand, which rejects them after it. New backend optionsallowedToolsanddisallowedTools. Bypass flags in configured args are removed and audited (cli.permissions); bypass is available only with the explicit opt-inunsafeSkipPermissions: true, which is audited on every run. Behaviour change: aclaude-cliagent that relied on the old bypass needsallowedTools(or the opt-in). The post-run tool check stays as a second, detective layer. New page: External agent adapters. - Fixed: the continuity suite now detects an in-place gateway restart (attached mode).
/health(with a credential) reportsstartedAt, which changes on every restart; previously an in-place restart kept the pid and process uptime and the suite reported C0 as failed although the gateway had restarted. - Context guard: CSV and TSV tool results with a header row are masked by column when the header matches
data.redact.fields. - Docs: evaluation pack, capabilities in this release, deployment and data boundaries, provider support levels.
2.0.2
- Fixed: the product name in the CLI banner, chat
/status, onboarding and the web control panel now reads Kurahi everywhere. - Fixed: the hardline guard blocks
pkill/killall/pgrepkills of the gateway under thekurahiname too; the port inspector recognises akurahigateway. - Fixed: bundles ship the client library as
@kodasoken/kurahi-client; release titles read Kurahi.
2.0.1
- The command is
kurahi;kolois installed as a short alias. Repository: github.com/koda-tokyo/kurahi. Docs: kurahi.com/docs. Installers: kodasoken.com/kurahi/install.sh and install.ps1. - New: context guard (
data.redactin the policy) masks personal data in tool results before the model sees it, with detectors for e-mail, phone numbers, My Number, CPF, CNPJ, card numbers and postal codes, field masking for JSON records, and restore only into tools the policy names. Masking is recorded in evidence bundles as counts, never values. - New: ransomware shield. Decoy files in every watched folder and detection of mass encryption (text files rewritten into high-entropy content, extra-extension swaps, ransom notes) stop every agent through the policy kill switch and write the incident to the audit log. On by default;
shieldin the policy sets the mode, extra folders and thresholds. - New:
kurahi inventory, a signed AI inventory of every agent, model, tool, policy rule, MCP server and channel, withexport(signed JSON or CSV) and offlineverify. - New:
KOLO_OAUTH_REFRESH=offdisables the OAuth refresher for deployments that share credential stores. - Fixed: the ACP client’s default server command now spawns
kurahi;--profileis added to printed commands for both command names.
2.0.0
Kurahi 2.0: a resident agent runtime you install once, own end to end and can prove. This is the first release on semantic versions; earlier releases used calendar versions (2026.2.1-kolo.1), and an installed calendar-versioned build sees 2.0.0 as an update.
Highlights
- Install and run (M1, M2): self-contained bundles for Linux, macOS and Windows with their own Node.js runtime and checksums;
install.sh/install.ps1;kurahi serviceover systemd, launchd and Task Scheduler;kurahi updatefor verified, atomic updates.kurahi initis the single first-run command, all state lives underKOLO_HOME, policy files are integrity-checked at boot and the audit log is hash-chained. - Five minutes to your phone (M16):
kurahi initends with an optional “Connect your phone” step, alsokurahi connect <channel>: WhatsApp QR, Telegram and LINE with secrets in the store and an add-friend QR, or a phone-browser pairing link. The first message with a one-time code binds you as owner (audited, revocable withkurahi connect --unbind). Replies to you are always delivered; proactive messages followchannels.delivery.policy(newreplies-only). - Pairing, sessions and channels (M3, M14): scoped device pairing with short-lived tokens,
kurahi attachfrom another terminal or machine, chat conversations mapped to the resident’s session, conversation commands (/status /jobs /cancel /evidence /pause /resume) and approvals from any channel, a per-channel outbound queue with retry and dead letters. - A described API (M4): OpenAPI 3.1 at
/doc, the generated@kodasoken/kolo-clientandkurahi api <operation>; CI fails on drift. - Tools (M5, M6): MCP servers with
kurahi mcp add|list|remove|test, under the same policy and audit as core tools; Code Mode runs one agent-written script that calls many tools in a sandbox with time, memory and call limits. - Operations (M7, M8): in-process health watchdog, log rotation, self-check and proactive triggers; every agent run is a job you can list and cancel; a step cap and loop detector stop runaway runs.
- Terminal and editor parity (M9, M10):
kurahi tuiwith a session switcher, diff view, themes, configurable keys and leader chords, slash commands,/undo//redofile snapshots,/export,@pathfile references; language-server diagnostics after edits; formatters on edit;kurahi providersandkurahi models list --live. - Reasoning view: reasoning streams live (redacted, opt-in per agent and policy) and shows in
kurahi tuias its own “Thinking” block above the answer, collapsed by default (Ctrl+O expands,/reasoning on|off|collapsed|expanded), and under the same headers inkurahi attachand the dashboard; evidence bundles can record it. - Proven continuity (M11):
kurahi continuity run|verify|badgeproves the resident (identity, memory, permissions, jobs, sessions, audit chain) is the same after a model swap, a restart, a state move and a session close. - Evidence and replay (M12): every job leaves a signed, hash-chained evidence bundle that verifies offline;
kurahi evidence list|show|export|verify|replay. - Policy as code (M13): one signed
policy/policy.yamlper gateway enforced at tool dispatch, model requests, channels, HTTP/WS and job start, with budgets per agent and fleet and a kill switch that stops running jobs within one tick (kurahi policy ...). - The factory (M15): boards of cards with an audited state machine from inbox to merged, run by a headless build engine as jobs with evidence, opening pull requests and merging only with the card’s policy;
kurahi factory, a Kanban view at/factory. - KODA tested models:
kurahi models benchruns a resident benchmark (tool use, coding, continuity, policy, language) and writes a signed report; the published catalogue (docs/providers/koda-tested.md) and akoda-testedprofile inkurahi initstart you on models that passed it.
Fixes
- Version ordering: calendar versions (2026.x) rank below every product version, so
kurahi update, update notices and the config “written by a newer Kurahi” warning treat 2.0.0 as newer than 2026.2.1-kolo.1. readandeditaccept thefile_pathalias without failing validation.
2026.2.1-kolo.1
Kurahi 2.0 integration release: the resident agent runtime, packaged and documented as one product.
Changes
- M1 Packaging and service: self-contained bundles per OS (own Node.js runtime,
bundle-manifest.json,SHA256SUMS),install.sh/install.ps1with checksum verification, onekurahi servicecommand over systemd, launchd and Task Scheduler,kurahi updatefor verified atomic bundle updates. - M2 State and integrity: every path resolved through
KOLO_HOME;kurahi initas the single first-run command with a bind policy (loopback|lan|tailnet|custom|remote); boot integrity gate over protected policy files (kurahi integrity), hash-chained audit log, non-loopback serving gated bygateway.remote.enabled. - M3 Pairing and sessions: scoped device pairing (
kurahi pair invite|approve|revoke) with short-lived access tokens, session discovery and attach from another terminal or machine (kurahi attach). - M4 Described API: OpenAPI 3.1 at
/doc(43 operations with auth kind and minimum scope), the generated@kodasoken/kolo-client, andkurahi api <operation>for anything the gateway can do; CI fails on drift. - M5 MCP:
kurahi mcp add|list|remove|test; MCP tools surface asmcp:<server>:<tool>under the same policy and audit as core tools. - M6 Code Mode: one agent-written script calls many tools in a sandboxed worker (
code_mode_run,POST /api/code-mode/run) with wall-clock, heap and tool-call limits. - M7 Ops plugins: health watchdog, log rotation, self-check, circadian and proactive triggers, memory boot inject, all in-process, config-driven and off by default except the health watchdog.
- M8 Jobs and loop guard: every agent run is a job (
listJobs,getJob,cancelJob); a step cap and doom-loop detector stop runaway runs and auditagent.loop_stopped. - M9 Parity:
kurahi tuisession switcher (agent, last activity, new session), unified diff view for file-edit tools, slash commands/sessions /attach /jobs /cancel /clear /theme, one-line status line, themes (tui.theme), configurable keys (tui.keybinds), reconnect banner with backoff, coalesced rendering; language servers (lsp.servers.<lang>, defaults for TypeScript, Python, Go, Rust, Java) withlsp_diagnostics,lsp_definition,lsp_references,lsp_hoverand diagnostics appended to write, edit and apply_patch results; provider registry withkurahi providers list|add|test|remove|defaultandkurahi models list --live; issue, pull request and discussion forms,ROADMAP.md,GOVERNANCE.md,docs/comparison.md. - M10 Parity, second pass: file snapshots before every tool edit with
/undo,/redo,/snapshotsandGET/POST /api/sessions/{id}/snapshots[/restore](45 operations, audited,snapshots.*);/export(Markdown or JSON, secrets redacted) and/editor($VISUAL/$EDITOR); eight built-in themes and JSON theme files (tui.themeas a path,kurahi tui themes list|export|check); a key and a leader chord for every TUI action (tui.keybinds.leader,/keys); formatters after edits (format.onEdit: prettier, biome, ruff, black, gofmt, rustfmt onPATH); provider catalogue generated from a public registry (pnpm providers:sync|check, 209 entries, curated first);@pathfile references attached to the message. - M11 Proven continuity:
kurahi continuity run|verify|badgeandpnpm continuity:checkprove that a resident (identity files, memory, role and permissions, jobs, sessions, transcripts, audit chain) is the same after a model swap, a gateway restart, a state-dir move and a session close; signed hash-chained manifests (getContinuityManifest), deterministic memory recall (recallMemory), audit chain head and anchors (getAuditChain); a job found running after a restart is reported as interrupted instead of stayingrunning; invariants C0–C9 indocs/continuity-spec.md. - M12 Evidence bundles and replay: every job records a hash-chained event log (model turns, tool calls, file snapshots, permission decisions, loop-guard verdicts, audit links) signed at job end with the continuity key;
kurahi evidence list|show|export|verify|replay|prune, bundles (manifest.json,events.jsonl,audit-slice.jsonl,snapshots/,REPORT.md) that verify offline, a replay stepper in the CLI and the TUI (/evidence <jobId>),getJobEvidence,listJobEvidenceEvents,exportJobEvidenceand the read-onlyGET /evidence/{id}view (52 operations);evidence.*config with caps and retention;pnpm evidence:checkin CI. - M13 Policy as code: one declarative
policy/policy.yamlper gateway (agents, budgets, kill, approvals, network, data, requests, attestation;kurahi policy schemaexports the JSON Schema), signed by an owner key and refused unsigned in enforce mode (policy.mode,KOLO_POLICY_MODE); enforced at tool dispatch (core, MCP, Code Mode), model requests, channel in/out, HTTP/WS requests and job start with every decision audited with its rule id (policy.decision); budgets per agent and fleet (tokens/day, cost/day from the provider price tables, tool calls/hour, wall clock per job) with warn/pause/stop; a kill switch that aborts running jobs within one tick (kurahi policy kill|release,POST /api/policy/kill|release, WSpolicy.kill|release,GET /api/policy/status, TUI banner);kurahi policy show|validate|sign|verify|diff|apply|status|kill|release|budget|init; hot reload of the policy files;pnpm policy:checkin CI;docs/policy.mdwith hospital-safe, trading-desk and manufacturing-floor starter policies. - M14 Channel-native residents:
channels.sessionMode(per-conversation | shared) maps every chat conversation to the resident’s session; inbound messages appear live inkurahi attachand the TUI with channel and sender; per-channelidentities(owner/admin/attach) andlocale(en/ja/pt); attachments copied toKOLO_HOME/inbox/<channel>/; conversation commands/status /jobs /cancel /evidence /pause /resume /helpfrom any channel; approval asks with approve/deny answers over channels; per-channel outbound queue with retry, dedupe, dead letters and a human-triggered policy (kurahi channels status,GET /api/channels/status); built-in generic webhook channel;pnpm channels:check. - M15 The factory: boards of cards under
KOLO_HOME/factorywith an audited state machine (inbox → spec → build → review → ready → merged, failed → inbox); aFactoryRunnerthat runs a card on the KIP headless engine as a job of kindfactory, streams the engine’s events into the card timeline and the job’s evidence log, moves the card as the engine reports, opens a pull request withgh(factory.github) or leaves the ready branch, and merges only with the card’sautoMergepolicy and the merge permission;factory_card_create|move|commenttools underexec:factory_card:*;GET /factoryKanban with livefactory.cardevents and evidence links;listFactoryBoards,listFactoryCards,createFactoryCard,getFactoryCard,moveFactoryCard,runFactoryCard,cancelFactoryCard(60 operations);kurahi factory boards|cards|create|show|move|run|cancel; TUI/factory;factory.*config;pnpm factory:checkin CI;docs/factory.md. - Voice:
docs/CLI_STYLE.mdgoverns every user-facing string; documented exit codes (0, 1, 2, 3, 4); no secrets on argv (kurahi logsno longer takes--token). - Support:
kurahi supportwrites a redacted diagnostics bundle; support@kodasoken.com. - Packages renamed:
@kodasoken/kolo(binkolo) and@kodasoken/kolo-client.
Fixes
- OAuth refresh lock: release unlinks the lock and empty, unparseable, expired or orphaned lock content is treated as stale; the old release wrote an empty file that blocked every later refresh in every process.
- The gateway starts its OAuth refresher only for OAuth-kind auth profiles configured under
KOLO_HOME(or sources from theoauth-sourcesoperator overlay) and is silent otherwise. Readers of other programs’ credential stores are no longer in the product tree. KOLO_HOMEis the whole state space: the shared root (canvas root, device identity, exec approvals, workspaces) isKOLO_HOMEwhen it is set; a test boots a gateway under a tempKOLO_HOMEand asserts nothing is written outside it.kurahi supportderives the service identity from the state root (KOLO_SERVICE_ID,service/service.json, the default agent fromkurahi init) instead of reportingdefault.install.ps1adds the bin directory to the user PATH only when it is absent, comparing entries case-insensitively without trailing separators.
Removed
- The npm
beta/devupdate channels, the alternative-runtime install path and the upstream deploy templates.
Earlier releases
Entries before Kurahi 2.0 are not published in this repository. The upstream project’s changelog (see ATTRIBUTION.md) covers the pre-fork history.