You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One remaining Kilo Code gap after #2417's items were resolved: mode-specific rule directories (.kilo/rules-{mode}/) are read on every Kilo config load but cannot be authored from rulesync — a rulesync rule can only apply to all modes.
Baseline: #2417 surveyed through v7.4.16 (2026-07-24) and is closed; its remaining items are now implemented — the sandbox permissions block (with project-scope narrowing to enabled/network) and global non-root rules (~/.kilo/rules) are both in the codebase and visible in dry-runs. The only newer stable release, v7.4.17 (2026-07-29), adds no authorable config surface.
Recent Releases
v7.4.17 (2026-07-29) — release — Agent Manager / VS Code UI work plus an OpenCode v1.17.5→v1.17.9 sync (PR #12460) of runtime MCP/provider bugfixes. No new config key or file surface.
v7.4.15 (2026-07-22, PR #12422) — "project memory" rework; agent-managed runtime state, not a user-authored config file.
Gaps
rules — mode-specific rule directories (.kilo/rules-{mode}/) not authorable (project scope)
Upstream (confirmed against main, 2026-07-30): packages/opencode/src/kilocode/rules-migrator.ts scans {.kilo,.kilocode}/rules-{mode}/*.md for KNOWN_MODES = ["code", "architect", "ask", "debug", "orchestrator"] and injects them as instructions. includeModeSpecific defaults to true and packages/opencode/src/kilocode/config/config.ts calls RulesMigrator.migrate({ projectDir }) with no options, so these directories are read on every config load — current behavior, not a one-shot legacy migration. Docs: custom instructions.
rulesync: unsupported — KILO_RULES_DIR_NAME is the single "rules" (src/constants/kilo-paths.ts), and kilo-rule.ts has no mode dimension.
Scope note: project only — the migrator's mode loop runs over projectDir and globalRulesDirs() has no mode variant.
Proposed Follow-up
Accept a kilo: { mode: "code" | "architect" | "ask" | "debug" | "orchestrator" } hint on a rulesync rule that routes the file into .kilo/rules-{mode}/ (and registers it in instructions), with the reverse mapping on import. Authoring-parity gap, not a correctness failure — same priority #2417 assigned it.
commands: upstream globs {command,commands}/**/*.md in each config dir, so .kilo/commands/ and .config/kilo/commands/ are genuinely loaded.
Legacy migrators (WorkflowsMigrator, ModesMigrator) convert legacy layouts into the native command/agent surfaces rulesync already writes.
Config schema sweep (packages/core/src/v1/config/config.ts): no unhandled authorable key — new keys are model/UI/runtime tuning; sandbox still carries exactly the four known keys; mode is @deprecated in favor of agent, which rulesync already targets.
checks: still no upstream surface.
Both dry-runs clean (54 files each; ignore correctly project-only).
packages/opencode/src/kilocode/rules-migrator.ts and packages/opencode/src/kilocode/config/config.ts on Kilo-Org/kilocode main — source evidence that mode-specific dirs load on every config load.
Summary
One remaining Kilo Code gap after #2417's items were resolved: mode-specific rule directories (
.kilo/rules-{mode}/) are read on every Kilo config load but cannot be authored from rulesync — a rulesync rule can only apply to all modes.Baseline: #2417 surveyed through v7.4.16 (2026-07-24) and is closed; its remaining items are now implemented — the
sandboxpermissions block (with project-scope narrowing toenabled/network) and global non-root rules (~/.kilo/rules) are both in the codebase and visible in dry-runs. The only newer stable release, v7.4.17 (2026-07-29), adds no authorable config surface.Recent Releases
Gaps
rules — mode-specific rule directories (
.kilo/rules-{mode}/) not authorable (project scope)main, 2026-07-30):packages/opencode/src/kilocode/rules-migrator.tsscans{.kilo,.kilocode}/rules-{mode}/*.mdforKNOWN_MODES = ["code", "architect", "ask", "debug", "orchestrator"]and injects them as instructions.includeModeSpecificdefaults totrueandpackages/opencode/src/kilocode/config/config.tscallsRulesMigrator.migrate({ projectDir })with no options, so these directories are read on every config load — current behavior, not a one-shot legacy migration. Docs: custom instructions.KILO_RULES_DIR_NAMEis the single"rules"(src/constants/kilo-paths.ts), andkilo-rule.tshas no mode dimension.projectDirandglobalRulesDirs()has no mode variant.Proposed Follow-up
Accept a
kilo: { mode: "code" | "architect" | "ask" | "debug" | "orchestrator" }hint on a rulesync rule that routes the file into.kilo/rules-{mode}/(and registers it ininstructions), with the reverse mapping on import. Authoring-parity gap, not a correctness failure — same priority #2417 assigned it.Non-gaps (verified, do not re-file)
sandboxblock): implemented —KiloPermissionsOverrideSchemacarriessandbox,narrowSandboxToProjectScope()enforces the upstream scope rule (project keeps onlyenabled/network, with a warning), and the global dry-run writes.config/kilo/kilo.jsonc.KiloRule.getSettablePaths({ global: true })returns~/.kilo/rulesand the global dry-run emits them.{command,commands}/**/*.mdin each config dir, so.kilo/commands/and.config/kilo/commands/are genuinely loaded.WorkflowsMigrator,ModesMigrator) convert legacy layouts into the nativecommand/agentsurfaces rulesync already writes.packages/core/src/v1/config/config.ts): no unhandled authorable key — new keys are model/UI/runtime tuning;sandboxstill carries exactly the four known keys;modeis@deprecatedin favor ofagent, which rulesync already targets.ignorecorrectly project-only).References
packages/opencode/src/kilocode/rules-migrator.tsandpackages/opencode/src/kilocode/config/config.tson Kilo-Org/kilocodemain— source evidence that mode-specific dirs load on every config load.