> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kodus.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Latest Kodus updates and improvements.

<div className="kodus-changelog-shell">
  <div className="kodus-changelog-filter-sidebar">
    <div className="kodus-changelog-filter-panel" aria-label="Changelog filters">
      <p className="kodus-changelog-filter-heading">Filters</p>

      <div className="kodus-changelog-filter-options">
        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-security" />

          <span>Security</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-cockpit" />

          <span>Cockpit</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-byok" />

          <span>BYOK</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-ai-engine" />

          <span>AI Engine</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-self-hosted" />

          <span>Self-hosted</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-git-provider" />

          <span>GIT Provider</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-performance" />

          <span>Performance</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-ux-interface" />

          <span>UX & Interface</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-notifications" />

          <span>Notifications</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-kody-rules" />

          <span>Kody Rules</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-mcp" />

          <span>MCP</span>
        </label>

        <label className="kodus-changelog-filter-button">
          <input className="kodus-changelog-filter-control" type="checkbox" id="kodus-filter-billing-licenses" />

          <span>Billing & Licenses</span>
        </label>
      </div>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">July 13, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface filter-byok">
          <div role="heading" aria-level="3" className="kodus-changelog-title">New Token Usage Experience</div>
          <p className="kodus-changelog-copy">The Token Usage page has been redesigned to provide a more complete view of consumption.</p>
          <p className="kodus-changelog-copy">It is now easier to track costs by area, model, and review activity, as well as filter the data and drill down into more specific analyses. This helps teams better understand where tokens are being used and how they can optimize costs.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/07/new-experience-token-usage.mp4" type="video/mp4" />
          </video>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules filter-ai-engine filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Automatic Detector Backfill for Existing Rules</div>
          <p className="kodus-changelog-copy">Organizations that created Kody Rules before this release can also benefit from the new architecture. We created an automated process that analyzes existing rules and, whenever possible, generates mechanical detectors for them.</p>
          <p className="kodus-changelog-copy">The process is incremental, safe, and does not interfere with the normal execution of rules. When a rule cannot be converted into a detector, it continues to work through the traditional semantic review flow.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules filter-ai-engine filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">More Accurate and Predictable Kody Rules</div>
          <p className="kodus-changelog-copy">We restructured how Kody applies custom rules during code reviews. Instead of relying solely on a more open-ended agent analysis, rules are now evaluated deterministically by file and PR scope.</p>
          <p className="kodus-changelog-copy">In practice, this improves rule coverage in large PRs, reduces cases where an applicable rule is overlooked, and makes Kody Rules behave more consistently across different models.</p>
          <p className="kodus-changelog-copy">We also introduced mechanical detectors for certain rules. When a rule can safely be converted into an objective check, Kody can apply it without making an LLM call, reducing costs and improving predictability.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Code Review Engine Improvements</div>
          <p className="kodus-changelog-copy">This release includes a major upgrade to the review agent runtime. We migrated important parts of the execution flow to a new agent harness foundation, making the system more modular, observable, and ready for future improvements.</p>
          <p className="kodus-changelog-copy">We also improved the engine used to search for evidence in the codebase, with a focus on finding more relevant cross-file references and increasing the quality of generated suggestions.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Cleaner Review Comments</div>
          <p className="kodus-changelog-copy">We adjusted the format of Kody's review comments to prevent internal reasoning structures from appearing in the output and to make suggestions more natural, concise, and easier to understand.</p>
          <p className="kodus-changelog-copy">We also fixed issues involving aliases and internal prompt references following recent refactors.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Improved BYOK Support</div>
          <p className="kodus-changelog-copy">We improved BYOK support across different parts of the product, including configuration, model fallback, and per-model cost calculations.</p>
          <p className="kodus-changelog-copy">We also introduced a clearer experience for viewing BYOK settings and understanding how each model affects token consumption.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">More Accurate Cost Tracking and Telemetry</div>
          <p className="kodus-changelog-copy">We improved the observability of LLM calls to ensure token usage is attributed correctly, especially within the new Kody Rules and agent workflows.</p>
          <p className="kodus-changelog-copy">This increases the accuracy of usage reports and prevents undercounting in more complex review scenarios.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-mcp filter-security">
          <div role="heading" aria-level="3" className="kodus-changelog-title">MCP Manager and Plugin Improvements</div>
          <p className="kodus-changelog-copy">We improved tenant isolation for MCP connections, enhanced connection sorting and testing, and removed legacy integrations that had already been deprecated.</p>
          <p className="kodus-changelog-copy">These changes increase the reliability of the plugins and integrations experience.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-self-hosted filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Improvements for Self-Hosted Environments</div>
          <p className="kodus-changelog-copy">We applied fixes to Dockerfiles, provisioning scripts, and local configuration to make self-hosted environments more stable.</p>
          <p className="kodus-changelog-copy">We also fixed an issue involving pnpm on macOS and adjusted the API hostname configuration used during provisioning.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-performance filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">More Stable Observability</div>
          <p className="kodus-changelog-copy">We fixed excessive memory consumption in the Mongo observability exporter and improved logging behavior across different environments.</p>
          <p className="kodus-changelog-copy">We also removed outdated references to the previous internal framework, simplifying the observability codebase.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">New Quality Tests and Validations</div>
          <p className="kodus-changelog-copy">We added new end-to-end scenarios and evaluations to validate Kody Rules, model recall, suggestion adherence, and prompt regressions.</p>
          <p className="kodus-changelog-copy">These validations help ensure that changes to models, prompts, or the underlying architecture do not reduce review quality.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface filter-byok filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Updated Documentation</div>
          <p className="kodus-changelog-copy">We updated the documentation for BYOK, custom messages, and focused reviews. We also revised the README and added new pages explaining how to guide Kody during a review.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-security filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Safer Rule Execution:</strong> we added protections against potentially unsafe regex patterns in Kody Rules detectors. This prevents malformed or computationally expensive rules from affecting review performance. We also fixed cases where outdated detectors could remain associated with a rule after an edit changed the rule's intended behavior.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-billing-licenses filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">License and Billing Improvements:</strong> we fixed issues involving trial creation, the listing of inactive users or users removed from the Git organization, and active seat counts. These changes make the license page more consistent and reduce discrepancies between the organization's actual users and the users displayed in billing.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">July 6, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Steer a review with focus</div>
          <p className="kodus-changelog-copy">You can now ask Kody to pay special attention to something specific during a review, without changing any configuration.</p>
          <p className="kodus-changelog-copy">In a PR, use <code className="kodus-changelog-code">@kody review \<directive></code>. In the CLI, use <code className="kodus-changelog-code">kodus review --focus</code>.</p>
          <p className="kodus-changelog-copy">Examples:</p>

          <ul className="kodus-changelog-list">
            <li><code className="kodus-changelog-code">@kody review focus on security</code></li>
            <li><code className="kodus-changelog-code">@kody review focus on performance</code></li>
            <li><code className="kodus-changelog-code">kodus review --focus "edge cases"</code></li>
          </ul>

          <p className="kodus-changelog-copy">This is especially useful for larger PRs or sensitive changes, where you want the review to go deeper on a specific area, such as security, performance, edge cases, a business rule, or a team standard.</p>
          <p className="kodus-changelog-copy">Focus works as a priority, not a filter. Kody pays closer attention to the context you provide, but still reports other concrete issues it finds in the diff.</p>
          <p className="kodus-changelog-copy">Learn more in the <a className="kodus-changelog-link" href="https://docs.kodus.io/how_to_use/en/code_review/review_directive">Steer a Review (Focus)</a> documentation.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-git-provider">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Consolidate LLM prompts into a single comment</div>
          <p className="kodus-changelog-copy">We added an option to generate a single PR comment containing all prompts and suggestions, so an external agent or AI tool can apply the fixes in one pass.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/07/agent-prompt.mp4" type="video/mp4" />
          </video>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Select all repositories at once</div>
          <p className="kodus-changelog-copy">In the add repositories modal, we added <strong>select all</strong> and <strong>clear selection</strong> buttons. For teams connecting dozens of repositories, this removes the need to select each one manually and significantly reduces setup time.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/07/add-repo-qa.mp4" type="video/mp4" />
          </video>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Cost breakdown by model (BYOK)</div>
          <p className="kodus-changelog-copy">Teams using Bring Your Own Key now have a detailed view of LLM usage by model on the costs screen. Instead of seeing only the total amount, you can identify exactly which providers and models are driving most of the usage and make clearer decisions about what to keep, replace, or limit.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://kodus.io/wp-content/uploads/2026/07/resumo-de-custos-por-modelo.mp4" type="video/mp4" />
          </video>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Review agent consolidation</div>
          <p className="kodus-changelog-copy">We reorganized the code review agents to run on a unified infrastructure. Previously, parts of the flow were spread across different places, which could lead to duplicated suggestions and inconsistent behavior. With this consolidation, the pipeline is more predictable, easier to maintain, and less likely to repeat suggestions in the same PR.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Content guard for deduplication</div>
          <p className="kodus-changelog-copy">We improved the deduplication algorithm so distinct bugs are not grouped as if they were the same issue. The content guard now better considers the actual content of each suggestion, reducing false-positive deduplication and making sure separate issues continue to be reported individually.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Prose findings recovery + Gemini support</div>
          <p className="kodus-changelog-copy">We fixed unstable behavior in prose finding generation and restored strict mode for Gemini. We also updated the Anthropic SDK, keeping compatibility with newer models and improving response stability.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-cockpit">
          <div role="heading" aria-level="3" className="kodus-changelog-title">RBAC documentation</div>
          <p className="kodus-changelog-copy">We updated the permissions documentation, including the <code className="kodus-changelog-code">OrganizationSettings</code> scope and the restriction that only the organization Owner can configure BYOK. This makes it clearer who can do what inside the workspace.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Review comments with broken formatting:</strong> fixed cases where Kody comments appeared with unexpected formatting in pull requests.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-byok">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Retry errors with BYOK providers:</strong> added preventive adjustments to avoid retry failures when a BYOK provider returns an empty response body.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Sandbox tool errors:</strong> the agent now handles errors better when running tools in the sandbox environment, without breaking the review.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Normalized user IDs:</strong> standardized how author, reviewer, and assignee IDs are handled, preventing PRs from breaking because of type differences, such as string vs. number.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">@kody conversation crashing on JSON wrapped in prose:</strong> fixed a crash that happened when Kody responded to mentions and the output came back as text containing embedded JSON.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">IDE sync config now respects approval settings:</strong> IDE rule synchronization now respects the approval configuration.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Rules with multiple directories:</strong> adjusted Kody Rules validation to correctly handle rules that apply to multiple path groups.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Automatic code review config creation:</strong> when a repository did not have a code review configuration, creating a Kody Rule could fail silently. The configuration is now created automatically.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Diff re-review in the agent:</strong> improved how the agent detects diffs from new commits during re-reviews.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-mcp">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">MCP Manager OAuth disconnect:</strong> fixed an issue with disconnecting OAuth credentials in MCP Manager that could cause inconsistent behavior.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-mcp">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">MCP Manager production build:</strong> the MCP Manager production build now correctly passes the GitHub token.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-cockpit">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Orphaned users in the license list:</strong> users removed from the GitHub organization now appear correctly in the license list.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-notifications">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Skipped review email:</strong> the notification email sent when a review is skipped now includes the author's name/email and no longer breaks when the user does not have a license.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">June 29, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Validated review engine</div>
          <p className="kodus-changelog-copy">We updated Kody's review pipeline to improve analysis accuracy and reduce cases where important issues could slip through unnoticed.</p>
          <p className="kodus-changelog-copy">The engine now identifies problematic patterns more effectively, better understands changes that span multiple files, and can review code regions with more flexibility when the context is not fully obvious.</p>
          <p className="kodus-changelog-copy">We also optimized processing and reduced the average cost per review by around 30%.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-cockpit">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Shareable dashboard views</div>
          <p className="kodus-changelog-copy">Filters applied in Cockpit are now saved in the URL, including time range, repositories, severity, and status.</p>
          <p className="kodus-changelog-copy">This means you can copy the link and share it with your team on Slack, for example. Anyone who opens the URL will see Cockpit with the same filters applied, without having to manually recreate the view.</p>
          <p className="kodus-changelog-copy">This makes it easier to share specific analyses, such as what changed over the past week or an increase in security suggestions in a repository.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://mintcdn.com/kodus/Y3FFBZB-0VxeL68o/videos/kodus-copy-url.mp4?fit=max&auto=format&n=Y3FFBZB-0VxeL68o&q=85&s=a50c3c5c6c2550c37812941af00fd7e6" type="video/mp4" data-path="videos/kodus-copy-url.mp4" />
          </video>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Unified Kody Rules lifecycle</div>
          <p className="kodus-changelog-copy">We unified the Kody Rules flow into a single lifecycle, regardless of where the rule was created: the library, manual creation, or inheritance from the organization to the repository.</p>
          <p className="kodus-changelog-copy">With this change, activating, editing, disabling, and approving rules now follow the same path inside the product. We also migrated older rules to the new format and centralized the control of rules pending approval.</p>
          <p className="kodus-changelog-copy">This makes the system more consistent, reduces unexpected states, and ensures that an active rule is actually applied in Kody reviews.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-mcp">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Migrate away from Composio</div>
          <p className="kodus-changelog-copy">We removed the dependency on Composio as an external MCP broker and moved to our own implementation for GitHub Issues, now integrated with Kodus Issues.</p>
          <p className="kodus-changelog-copy">This reduces an external point of failure, improves call reliability, and gives us more control over authentication, rate limits, and retries.</p>
          <p className="kodus-changelog-copy">As part of the migration, we also removed low-usage integrations that depended on Composio, such as ClickUp and CloudId.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Inheritance toggle</div>
          <p className="kodus-changelog-copy">When you enable or disable rule inheritance from the organization to a repository, the UI now shows the new state immediately, without waiting for the API response.</p>
          <p className="kodus-changelog-copy">If the call fails, for example because of a connection issue, the state is automatically reverted and we show an error toast. Before, users would click, wait, and not get clear feedback about what had happened.</p>
          <p className="kodus-changelog-copy">We also improved the rules cache update. Now we only invalidate the rules affected by that inheritance change, avoiding unnecessary reloads for rules that did not change.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Kody Rules Origin</div>
          <p className="kodus-changelog-copy">We added an explicit origin to all Kody Rules: <code className="kodus-changelog-code">LIBRARY</code>, <code className="kodus-changelog-code">MANUAL</code>, <code className="kodus-changelog-code">INHERITED</code>, and <code className="kodus-changelog-code">SUGGESTED</code>.</p>
          <p className="kodus-changelog-copy">This fixes an issue where some rule creation scenarios could fail silently because the backend expected an origin value that the frontend was not sending.</p>
          <p className="kodus-changelog-copy">Now the contract between frontend and backend is clearer, and the rule origin is validated before reaching the creation flow.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Atlassian Rovo</div>
          <p className="kodus-changelog-copy">Rovo is an Atlassian AI agent that generates code and edits files automatically. When it creates commits, it includes specific metadata, such as message prefixes and custom headers.</p>
          <p className="kodus-changelog-copy">Previously, our review engine identified those commits as human-written code and could suggest changes on them.</p>
          <p className="kodus-changelog-copy">Now we detect Rovo commits and skip those changes both in the code review logic and in the MCP business-rule validation preflight.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-mcp">
          <div role="heading" aria-level="3" className="kodus-changelog-title">MCP OAuth callback</div>
          <p className="kodus-changelog-copy">We fixed the OAuth flow for connecting MCPs, such as GitHub and Jira.</p>
          <p className="kodus-changelog-copy">Previously, users who had already completed onboarding could be blocked when trying to add a new MCP. Now the callback works at any time, as long as the state parameter is valid.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface filter-kody-rules">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Pending rules section</div>
          <p className="kodus-changelog-copy">Pending rules, which need approval before entering the review pipeline, now have a dedicated section with improved UX.</p>
          <p className="kodus-changelog-copy">The section shows a status badge, who suggested the rule, when it was suggested, and inline actions to approve or reject it.</p>
          <p className="kodus-changelog-copy">Previously, these rules appeared mixed together with active rules, which made it easy to miss that something needed attention.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">GitHub Integration GitHub App post-onboarding:</strong> we fixed an issue where some GitHub integration pages returned a 404 after the user completed onboarding. This affected routes such as <code className="kodus-changelog-code">/github/integration</code> and <code className="kodus-changelog-code">/github/organization-name</code> when the GitHub App installation state was not updated correctly. We also adjusted the redirect after installation and added route validations to make the integration flow more reliable across different states.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Severity slicer colors:</strong> the severity control for low, medium, high, and critical used inconsistent colors. In some places, red meant critical; in others, it meant high. We standardized it to a semantic scale: gray for low, yellow for medium, orange for high, and red for critical. This affects Cockpit filters, suggestion badges, and notification settings.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">June 22, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-git-provider">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Forgejo support is now on par with GitHub & GitLab</div>
          <p className="kodus-changelog-copy">Review comments, commit statuses, force-push detection, and webhook coverage now work consistently for Forgejo repositories. If you self-host with Forgejo, Kody behaves just like on any other major platform.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-performance">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Faster PR closing for large repos</div>
          <p className="kodus-changelog-copy">Eliminated duplicate API calls when syncing Kody Rules from changed files. PRs with many files now close noticeably faster.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ux-interface">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Cleaner settings UI</div>
          <p className="kodus-changelog-copy">Platform settings that don't apply to your current Git provider, such as GitHub-specific options when you're on GitLab, are now hidden automatically. Less clutter, fewer misconfigurations.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Reconnecting a Git provider after disconnecting:</strong> previously, disconnecting a provider left stale integration configs behind, causing reconnects to fail. Now stale rows are properly cleaned up.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Kody conversation replies with empty responses:</strong> resolved an issue where Kody occasionally replied with blank content in PR comment threads when using Claude Sonnet.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">NaN deduplication indices:</strong> added three-layer protection against NaN values appearing in suggestion deduplication indices, preventing rare but confusing duplicate suggestions.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Forgejo prompt field always empty:</strong> the formatPromptForLLM function was reading a non-existent field on Forgejo PRs, causing the prompt section to be blank. Now it reads the correct field.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-self-hosted">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Self-hosted AST graph reliability:</strong> the kodus-graph CLI was installed but not available to the runtime user in self-hosted worker images. Fixed PATH and install order so graph indexing works out of the box.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Orphaned agent trace records:</strong> prevented a race condition in chunked review mode that could leave orphaned <code className="kodus-changelog-code">IN\_PROGRESS</code> trace records in the database.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ux-interface">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Platform settings not scoped to Git tool:</strong> settings incompatible with your current Git provider were still visible. Now they're properly filtered based on the connected tool.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">June 15, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-cockpit">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Operational metrics in Cockpit</div>
          <p className="kodus-changelog-copy">Track the health of your review pipeline in real time. Throughput, queue, and processing time metrics are now available in Cockpit.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://mintcdn.com/kodus/7VSfjDYUK8FVdsW8/videos/cockpit.mp4?fit=max&auto=format&n=7VSfjDYUK8FVdsW8&q=85&s=b1ba0094bd326c51a218cf52464fa644" type="video/mp4" data-path="videos/cockpit.mp4" />
          </video>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Redesigned Kodus Review tab</div>
          <p className="kodus-changelog-copy">The review tab has been redesigned with a cleaner interface and more direct actions. You can now analyze and act on suggestions without leaving the PR screen.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://mintcdn.com/kodus/7VSfjDYUK8FVdsW8/videos/kody-review-tab.mp4?fit=max&auto=format&n=7VSfjDYUK8FVdsW8&q=85&s=725b1e80c015df1f9767b939b0a5b984" type="video/mp4" data-path="videos/kody-review-tab.mp4" />
          </video>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-self-hosted">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Backend on pnpm</div>
          <p className="kodus-changelog-copy">We migrated the backend from Yarn 1 to pnpm. This makes builds faster, improves lockfile consistency, and reduces cache issues across environments.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Token usage screen</div>
          <p className="kodus-changelog-copy">The token usage screen has been redesigned to make consumption by organization and period easier to understand. It is now simpler to track usage and see how tokens are being consumed over time.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://mintcdn.com/kodus/7VSfjDYUK8FVdsW8/videos/token-usage-redesign.mp4?fit=max&auto=format&n=7VSfjDYUK8FVdsW8&q=85&s=a757b3f3472d6fd21c418cd119078edd" type="video/mp4" data-path="videos/token-usage-redesign.mp4" />
          </video>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Bug fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-self-hosted">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Self-hosted analytics:</strong> we fixed the analytics integration for self-hosted deployments. Usage metrics now appear correctly in the dashboard.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Issue cache:</strong> the issue count in the sidebar could sometimes become outdated. The cache is now invalidated correctly after changes.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">GitHub rate limit:</strong> we fixed a rate limit issue in cloud E2E tests. We now use round-robin across multiple bot accounts to better distribute requests.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-notifications">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Notification routing:</strong> we fixed the behavior of targeted notifications when combined with audience settings. Notifications now reach the right people without duplicates.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-kody-rules">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Centralized config sync:</strong> we fixed issues in the centralized sync of Kody Rules configurations across repositories. Sync now correctly handles multiple scopes, stale configurations, and merge-triggered updates.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>

  <div className="kodus-changelog-release">
    <div className="kodus-changelog-meta">
      <span className="kodus-changelog-date">June 8, 2026</span>
    </div>

    <div className="kodus-changelog-content">
      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">What's new</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine filter-byok">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Moonshot Kimi support for BYOK</div>
          <p className="kodus-changelog-copy">We added support for Moonshot as a provider, compatible with the Anthropic API.</p>
          <p className="kodus-changelog-copy">You can now use the Kimi Coding Plan model in BYOK setups. To configure it, set the <code className="kodus-changelog-code">API\_MOONSHOT\_API\_KEY</code> key and select the model in the organization preferences.</p>
          <p className="kodus-changelog-copy">See the <a className="kodus-changelog-link" href="https://docs.kodus.io/knowledge_base/en/how-to-use-moonshot-with-kodus">Moonshot (Kimi)</a> documentation for more setup details.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-byok">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Monthly token usage control</div>
          <p className="kodus-changelog-copy">Organizations can now set monthly token consumption limits per model.</p>
          <p className="kodus-changelog-copy">Usage is shown in real time in the interface, with a progress bar. When usage reaches 80% of the limit, the team receives an email alert. If the limit is reached, additional reviews can be blocked automatically.</p>

          <video autoPlay loop muted playsInline preload="auto" className="kodus-changelog-video">
            <source src="https://mintcdn.com/kodus/DBHuk6f6YXfMSEEr/videos/token-usage.mp4?fit=max&auto=format&n=DBHuk6f6YXfMSEEr&q=85&s=4549a5a972641ba9886dd686d8e57cbb" type="video/mp4" data-path="videos/token-usage.mp4" />
          </video>

          <p className="kodus-changelog-copy">See the <a className="kodus-changelog-link" href="https://docs.kodus.io/how_to_use/en/spend-limit">Monthly Spend Limit</a> documentation for more setup details.</p>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Improvements</div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">More resilient review agent</div>
          <p className="kodus-changelog-copy">The review engine now handles empty or malformed LLM responses better.</p>
          <p className="kodus-changelog-copy">This reduces loops in edge cases and helps ensure valid suggestions continue to be delivered even when the provider returns an unexpected response.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-self-hosted">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Telemetry for self-hosted environments</div>
          <p className="kodus-changelog-copy">On-premise installations now automatically report health metrics, such as heartbeat, and usage data.</p>
          <p className="kodus-changelog-copy">The goal is to make diagnosis and support easier without exposing sensitive customer data.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-ai-engine">
          <div role="heading" aria-level="3" className="kodus-changelog-title">Faster Kody Rules</div>
          <p className="kodus-changelog-copy">We improved the loading and synchronization of custom rules.</p>
          <p className="kodus-changelog-copy">We also fixed the count of orphaned rules and made partial updates safer against race conditions.</p>
        </div>

        <div className="kodus-changelog-item kodus-changelog-filterable filter-git-provider">
          <div role="heading" aria-level="3" className="kodus-changelog-title">GitLab compatibility improvements</div>

          <ul className="kodus-changelog-list">
            <li>Support for GitLab 13.x in comment webhooks</li>
            <li>Diff fallback for versions earlier than 15.7</li>
            <li>Fixes for discussion threads and replies scoped by discussionId</li>
            <li>Self-hosted development environment documentation</li>
          </ul>
        </div>
      </div>

      <div className="kodus-changelog-section">
        <div role="heading" aria-level="2" className="kodus-changelog-section-label">Fixes</div>

        <div className="kodus-changelog-fix-list">
          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider filter-security">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">GitHub:</strong> suspended users no longer appear in the member list for license assignment.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-git-provider">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Update Connection:</strong> integration reauthentication now correctly clears the previous configuration.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable filter-ai-engine">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Integration reset:</strong> Kody Rules linked to the repo/directory are now removed automatically.</p>
          </div>

          <div className="kodus-changelog-fix kodus-changelog-filterable">
            <p className="kodus-changelog-copy"><strong className="kodus-changelog-fix-label">Release Freeze:</strong> eligibility notifications only appear when the freeze is active.</p>
          </div>
        </div>
      </div>

      <p className="kodus-changelog-empty">No changelog entries for this filter yet.</p>
    </div>
  </div>
</div>

<div className="kodus-changelog-rss-source" aria-hidden="true">
  <Update label="July 13, 2026 - New Token Usage Experience" tags={["UX & Interface", "BYOK"]}>
    The Token Usage page has been redesigned to provide a more complete view of consumption.

    It is now easier to track costs by area, model, and review activity, as well as filter the data and drill down into more specific analyses. This helps teams better understand where tokens are being used and how they can optimize costs.

    Video: [https://kodus.io/wp-content/uploads/2026/07/new-experience-token-usage.mp4](https://kodus.io/wp-content/uploads/2026/07/new-experience-token-usage.mp4)
  </Update>

  <Update label="July 13, 2026 - Automatic Detector Backfill for Existing Rules" tags={["Kody Rules", "AI Engine", "Performance"]}>
    Organizations that created Kody Rules before this release can also benefit from the new architecture. We created an automated process that analyzes existing rules and, whenever possible, generates mechanical detectors for them.

    The process is incremental, safe, and does not interfere with the normal execution of rules. When a rule cannot be converted into a detector, it continues to work through the traditional semantic review flow.
  </Update>

  <Update label="July 13, 2026 - More Accurate and Predictable Kody Rules" tags={["Kody Rules", "AI Engine", "Performance"]}>
    We restructured how Kody applies custom rules during code reviews. Instead of relying solely on a more open-ended agent analysis, rules are now evaluated deterministically by file and PR scope.

    In practice, this improves rule coverage in large PRs, reduces cases where an applicable rule is overlooked, and makes Kody Rules behave more consistently across different models.

    We also introduced mechanical detectors for certain rules. When a rule can safely be converted into an objective check, Kody can apply it without making an LLM call, reducing costs and improving predictability.
  </Update>

  <Update label="July 13, 2026 - Code Review Engine Improvements" tags={["AI Engine", "Performance"]}>
    This release includes a major upgrade to the review agent runtime. We migrated important parts of the execution flow to a new agent harness foundation, making the system more modular, observable, and ready for future improvements.

    We also improved the engine used to search for evidence in the codebase, with a focus on finding more relevant cross-file references and increasing the quality of generated suggestions.
  </Update>

  <Update label="July 13, 2026 - Cleaner Review Comments" tags={["AI Engine", "UX & Interface"]}>
    We adjusted the format of Kody's review comments to prevent internal reasoning structures from appearing in the output and to make suggestions more natural, concise, and easier to understand.

    We also fixed issues involving aliases and internal prompt references following recent refactors.
  </Update>

  <Update label="July 13, 2026 - Improved BYOK Support" tags={["BYOK", "AI Engine"]}>
    We improved BYOK support across different parts of the product, including configuration, model fallback, and per-model cost calculations.

    We also introduced a clearer experience for viewing BYOK settings and understanding how each model affects token consumption.
  </Update>

  <Update label="July 13, 2026 - More Accurate Cost Tracking and Telemetry" tags={["BYOK", "AI Engine"]}>
    We improved the observability of LLM calls to ensure token usage is attributed correctly, especially within the new Kody Rules and agent workflows.

    This increases the accuracy of usage reports and prevents undercounting in more complex review scenarios.
  </Update>

  <Update label="July 13, 2026 - MCP Manager and Plugin Improvements" tags={["MCP", "Security"]}>
    We improved tenant isolation for MCP connections, enhanced connection sorting and testing, and removed legacy integrations that had already been deprecated.

    These changes increase the reliability of the plugins and integrations experience.
  </Update>

  <Update label="July 13, 2026 - Improvements for Self-Hosted Environments" tags={["Self-hosted", "Performance"]}>
    We applied fixes to Dockerfiles, provisioning scripts, and local configuration to make self-hosted environments more stable.

    We also fixed an issue involving pnpm on macOS and adjusted the API hostname configuration used during provisioning.
  </Update>

  <Update label="July 13, 2026 - More Stable Observability" tags={["Performance", "AI Engine"]}>
    We fixed excessive memory consumption in the Mongo observability exporter and improved logging behavior across different environments.

    We also removed outdated references to the previous internal framework, simplifying the observability codebase.
  </Update>

  <Update label="July 13, 2026 - New Quality Tests and Validations" tags={["AI Engine", "Kody Rules"]}>
    We added new end-to-end scenarios and evaluations to validate Kody Rules, model recall, suggestion adherence, and prompt regressions.

    These validations help ensure that changes to models, prompts, or the underlying architecture do not reduce review quality.
  </Update>

  <Update label="July 13, 2026 - Updated Documentation" tags={["UX & Interface", "BYOK", "AI Engine"]}>
    We updated the documentation for BYOK, custom messages, and focused reviews. We also revised the README and added new pages explaining how to guide Kody during a review.
  </Update>

  <Update label="July 13, 2026 - Safer Rule Execution" tags={["Security", "Kody Rules"]}>
    We added protections against potentially unsafe regex patterns in Kody Rules detectors. This prevents malformed or computationally expensive rules from affecting review performance. We also fixed cases where outdated detectors could remain associated with a rule after an edit changed the rule's intended behavior.
  </Update>

  <Update label="July 13, 2026 - License and Billing Improvements" tags={["Billing & Licenses", "UX & Interface"]}>
    We fixed issues involving trial creation, the listing of inactive users or users removed from the Git organization, and active seat counts. These changes make the license page more consistent and reduce discrepancies between the organization's actual users and the users displayed in billing.
  </Update>

  <Update label="July 6, 2026 - Steer a review with focus" tags={["AI Engine"]}>
    You can now ask Kody to pay special attention to something specific during a review, without changing any configuration.

    In a PR, use @kody review \<directive>. In the CLI, use kodus review --focus.

    Examples: @kody review focus on security. @kody review focus on performance. Or in the CLI: kodus review --focus "edge cases".

    This is especially useful for larger PRs or sensitive changes, where you want the review to go deeper on a specific area, such as security, performance, edge cases, a business rule, or a team standard.

    Focus works as a priority, not a filter. Kody pays closer attention to the context you provide, but still reports other concrete issues it finds in the diff.

    Learn more in the Steer a Review Focus documentation: [https://docs.kodus.io/how\_to\_use/en/code\_review/review\_directive](https://docs.kodus.io/how_to_use/en/code_review/review_directive)
  </Update>

  <Update label="July 6, 2026 - Consolidate LLM prompts into a single comment" tags={["AI Engine", "GIT Provider"]}>
    We added an option to generate a single PR comment containing all prompts and suggestions, so an external agent or AI tool can apply the fixes in one pass.

    Video: [https://kodus.io/wp-content/uploads/2026/07/agent-prompt.mp4](https://kodus.io/wp-content/uploads/2026/07/agent-prompt.mp4)
  </Update>

  <Update label="July 6, 2026 - Select all repositories at once" tags={["UX & Interface"]}>
    In the add repositories modal, we added select all and clear selection buttons. For teams connecting dozens of repositories, this removes the need to select each one manually and significantly reduces setup time.

    Video: [https://kodus.io/wp-content/uploads/2026/07/add-repo-qa.mp4](https://kodus.io/wp-content/uploads/2026/07/add-repo-qa.mp4)
  </Update>

  <Update label="July 6, 2026 - Cost breakdown by model (BYOK)" tags={["BYOK"]}>
    Teams using Bring Your Own Key now have a detailed view of LLM usage by model on the costs screen. Instead of seeing only the total amount, you can identify exactly which providers and models are driving most of the usage and make clearer decisions about what to keep, replace, or limit.

    Video: [https://kodus.io/wp-content/uploads/2026/07/resumo-de-custos-por-modelo.mp4](https://kodus.io/wp-content/uploads/2026/07/resumo-de-custos-por-modelo.mp4)
  </Update>

  <Update label="July 6, 2026 - Review agent consolidation" tags={["AI Engine", "Performance"]}>
    We reorganized the code review agents to run on a unified infrastructure. Previously, parts of the flow were spread across different places, which could lead to duplicated suggestions and inconsistent behavior. With this consolidation, the pipeline is more predictable, easier to maintain, and less likely to repeat suggestions in the same PR.
  </Update>

  <Update label="July 6, 2026 - Content guard for deduplication" tags={["AI Engine"]}>
    We improved the deduplication algorithm so distinct bugs are not grouped as if they were the same issue. The content guard now better considers the actual content of each suggestion, reducing false-positive deduplication and making sure separate issues continue to be reported individually.
  </Update>

  <Update label="July 6, 2026 - Prose findings recovery + Gemini support" tags={["AI Engine"]}>
    We fixed unstable behavior in prose finding generation and restored strict mode for Gemini. We also updated the Anthropic SDK, keeping compatibility with newer models and improving response stability.
  </Update>

  <Update label="July 6, 2026 - RBAC documentation" tags={["Cockpit"]}>
    We updated the permissions documentation, including the OrganizationSettings scope and the restriction that only the organization Owner can configure BYOK. This makes it clearer who can do what inside the workspace.
  </Update>

  <Update label="July 6, 2026 - Review comments with broken formatting" tags={["UX & Interface", "GIT Provider"]}>
    Fixed cases where Kody comments appeared with unexpected formatting in pull requests.
  </Update>

  <Update label="July 6, 2026 - Retry errors with BYOK providers" tags={["BYOK"]}>
    Added preventive adjustments to avoid retry failures when a BYOK provider returns an empty response body.
  </Update>

  <Update label="July 6, 2026 - Sandbox tool errors" tags={["AI Engine"]}>
    The agent now handles errors better when running tools in the sandbox environment, without breaking the review.
  </Update>

  <Update label="July 6, 2026 - Normalized user IDs" tags={["GIT Provider"]}>
    Standardized how author, reviewer, and assignee IDs are handled, preventing PRs from breaking because of type differences, such as string vs. number.
  </Update>

  <Update label="July 6, 2026 - @kody conversation crashing on JSON wrapped in prose" tags={["AI Engine", "GIT Provider"]}>
    Fixed a crash that happened when Kody responded to mentions and the output came back as text containing embedded JSON.
  </Update>

  <Update label="July 6, 2026 - IDE sync config now respects approval settings" tags={["Kody Rules"]}>
    IDE rule synchronization now respects the approval configuration.
  </Update>

  <Update label="July 6, 2026 - Rules with multiple directories" tags={["Kody Rules"]}>
    Adjusted Kody Rules validation to correctly handle rules that apply to multiple path groups.
  </Update>

  <Update label="July 6, 2026 - Automatic code review config creation" tags={["Kody Rules"]}>
    When a repository did not have a code review configuration, creating a Kody Rule could fail silently. The configuration is now created automatically.
  </Update>

  <Update label="July 6, 2026 - Diff re-review in the agent" tags={["AI Engine"]}>
    Improved how the agent detects diffs from new commits during re-reviews.
  </Update>

  <Update label="July 6, 2026 - MCP Manager OAuth disconnect" tags={["MCP"]}>
    Fixed an issue with disconnecting OAuth credentials in MCP Manager that could cause inconsistent behavior.
  </Update>

  <Update label="July 6, 2026 - MCP Manager production build" tags={["MCP"]}>
    The MCP Manager production build now correctly passes the GitHub token.
  </Update>

  <Update label="July 6, 2026 - Orphaned users in the license list" tags={["Cockpit"]}>
    Users removed from the GitHub organization now appear correctly in the license list.
  </Update>

  <Update label="July 6, 2026 - Skipped review email" tags={["Notifications"]}>
    The notification email sent when a review is skipped now includes the author's name/email and no longer breaks when the user does not have a license.
  </Update>

  <Update label="June 29, 2026 - Validated review engine" tags={["AI Engine"]}>
    We updated Kody's review pipeline to improve analysis accuracy and reduce cases where important issues could slip through unnoticed.

    The engine now identifies problematic patterns more effectively, better understands changes that span multiple files, and can review code regions with more flexibility when the context is not fully obvious.

    We also optimized processing and reduced the average cost per review by around 30%.
  </Update>

  <Update label="June 29, 2026 - Shareable dashboard views" tags={["Cockpit"]}>
    Filters applied in Cockpit are now saved in the URL, including time range, repositories, severity, and status.

    This means you can copy the link and share it with your team on Slack, for example. Anyone who opens the URL will see Cockpit with the same filters applied, without having to manually recreate the view.

    This makes it easier to share specific analyses, such as what changed over the past week or an increase in security suggestions in a repository.

    Video: [https://kodus.io/wp-content/uploads/2026/06/kodus-copy-url.mp4](https://kodus.io/wp-content/uploads/2026/06/kodus-copy-url.mp4)
  </Update>

  <Update label="June 29, 2026 - Unified Kody Rules lifecycle" tags={["Kody Rules"]}>
    We unified the Kody Rules flow into a single lifecycle, regardless of where the rule was created: the library, manual creation, or inheritance from the organization to the repository.

    With this change, activating, editing, disabling, and approving rules now follow the same path inside the product. We also migrated older rules to the new format and centralized the control of rules pending approval.

    This makes the system more consistent, reduces unexpected states, and ensures that an active rule is actually applied in Kody reviews.
  </Update>

  <Update label="June 29, 2026 - Migrate away from Composio" tags={["MCP"]}>
    We removed the dependency on Composio as an external MCP broker and moved to our own implementation for GitHub Issues, now integrated with Kodus Issues.

    This reduces an external point of failure, improves call reliability, and gives us more control over authentication, rate limits, and retries.

    As part of the migration, we also removed low-usage integrations that depended on Composio, such as ClickUp and CloudId.
  </Update>

  <Update label="June 29, 2026 - Inheritance toggle" tags={["Kody Rules"]}>
    When you enable or disable rule inheritance from the organization to a repository, the UI now shows the new state immediately, without waiting for the API response.

    If the call fails, for example because of a connection issue, the state is automatically reverted and we show an error toast. Before, users would click, wait, and not get clear feedback about what had happened.

    We also improved the rules cache update. Now we only invalidate the rules affected by that inheritance change, avoiding unnecessary reloads for rules that did not change.
  </Update>

  <Update label="June 29, 2026 - Kody Rules Origin" tags={["Kody Rules"]}>
    We added an explicit origin to all Kody Rules: LIBRARY, MANUAL, INHERITED, and SUGGESTED.

    This fixes an issue where some rule creation scenarios could fail silently because the backend expected an origin value that the frontend was not sending.

    Now the contract between frontend and backend is clearer, and the rule origin is validated before reaching the creation flow.
  </Update>

  <Update label="June 29, 2026 - Atlassian Rovo" tags={["AI Engine"]}>
    Rovo is an Atlassian AI agent that generates code and edits files automatically. When it creates commits, it includes specific metadata, such as message prefixes and custom headers.

    Previously, our review engine identified those commits as human-written code and could suggest changes on them.

    Now we detect Rovo commits and skip those changes both in the code review logic and in the MCP business-rule validation preflight.
  </Update>

  <Update label="June 29, 2026 - MCP OAuth callback" tags={["MCP"]}>
    We fixed the OAuth flow for connecting MCPs, such as GitHub and Jira.

    Previously, users who had already completed onboarding could be blocked when trying to add a new MCP. Now the callback works at any time, as long as the state parameter is valid.
  </Update>

  <Update label="June 29, 2026 - Pending rules section" tags={["UX & Interface", "Kody Rules"]}>
    Pending rules, which need approval before entering the review pipeline, now have a dedicated section with improved UX.

    The section shows a status badge, who suggested the rule, when it was suggested, and inline actions to approve or reject it.

    Previously, these rules appeared mixed together with active rules, which made it easy to miss that something needed attention.
  </Update>

  <Update label="June 29, 2026 - GitHub Integration GitHub App post-onboarding" tags={["GIT Provider"]}>
    We fixed an issue where some GitHub integration pages returned a 404 after the user completed onboarding. This affected routes such as /github/integration and /github/organization-name when the GitHub App installation state was not updated correctly. We also adjusted the redirect after installation and added route validations to make the integration flow more reliable across different states.
  </Update>

  <Update label="June 29, 2026 - Severity slicer colors" tags={["UX & Interface"]}>
    The severity control for low, medium, high, and critical used inconsistent colors. In some places, red meant critical; in others, it meant high. We standardized it to a semantic scale: gray for low, yellow for medium, orange for high, and red for critical. This affects Cockpit filters, suggestion badges, and notification settings.
  </Update>

  <Update label="June 22, 2026 - Forgejo support is now on par with GitHub & GitLab" tags={["GIT Provider"]}>
    Review comments, commit statuses, force-push detection, and webhook coverage now work consistently for Forgejo repositories. If you self-host with Forgejo, Kody behaves just like on any other major platform.
  </Update>

  <Update label="June 22, 2026 - Faster PR closing for large repos" tags={["Performance"]}>
    Eliminated duplicate API calls when syncing Kody Rules from changed files. PRs with many files now close noticeably faster.
  </Update>

  <Update label="June 22, 2026 - Cleaner settings UI" tags={["UX & Interface"]}>
    Platform settings that don't apply to your current Git provider, such as GitHub-specific options when you're on GitLab, are now hidden automatically. Less clutter, fewer misconfigurations.
  </Update>

  <Update label="June 22, 2026 - Reconnecting a Git provider after disconnecting" tags={["GIT Provider"]}>
    Previously, disconnecting a provider left stale integration configs behind, causing reconnects to fail. Now stale rows are properly cleaned up.
  </Update>

  <Update label="June 22, 2026 - Kody conversation replies with empty responses" tags={["AI Engine"]}>
    Resolved an issue where Kody occasionally replied with blank content in PR comment threads when using Claude Sonnet.
  </Update>

  <Update label="June 22, 2026 - NaN deduplication indices" tags={["AI Engine"]}>
    Added three-layer protection against NaN values appearing in suggestion deduplication indices, preventing rare but confusing duplicate suggestions.
  </Update>

  <Update label="June 22, 2026 - Forgejo prompt field always empty" tags={["GIT Provider"]}>
    The formatPromptForLLM function was reading a non-existent field on Forgejo PRs, causing the prompt section to be blank. Now it reads the correct field.
  </Update>

  <Update label="June 22, 2026 - Self-hosted AST graph reliability" tags={["Self-hosted"]}>
    The kodus-graph CLI was installed but not available to the runtime user in self-hosted worker images. Fixed PATH and install order so graph indexing works out of the box.
  </Update>

  <Update label="June 22, 2026 - Orphaned agent trace records" tags={["AI Engine"]}>
    Prevented a race condition in chunked review mode that could leave orphaned IN\_PROGRESS trace records in the database.
  </Update>

  <Update label="June 22, 2026 - Platform settings not scoped to Git tool" tags={["UX & Interface"]}>
    Settings incompatible with your current Git provider were still visible. Now they're properly filtered based on the connected tool.
  </Update>

  <Update label="June 15, 2026 - Operational metrics in Cockpit" tags={["Cockpit"]}>
    Track the health of your review pipeline in real time. Throughput, queue, and processing time metrics are now available in Cockpit.

    Video: [https://kodus.io/wp-content/uploads/2026/06/cockpit.mp4](https://kodus.io/wp-content/uploads/2026/06/cockpit.mp4)
  </Update>

  <Update label="June 15, 2026 - Redesigned Kodus Review tab" tags={["AI Engine"]}>
    The review tab has been redesigned with a cleaner interface and more direct actions. You can now analyze and act on suggestions without leaving the PR screen.

    Video: [https://kodus.io/wp-content/uploads/2026/06/kody-review-tab.mp4](https://kodus.io/wp-content/uploads/2026/06/kody-review-tab.mp4)
  </Update>

  <Update label="June 15, 2026 - Backend on pnpm" tags={["Self-hosted"]}>
    We migrated the backend from Yarn 1 to pnpm. This makes builds faster, improves lockfile consistency, and reduces cache issues across environments.
  </Update>

  <Update label="June 15, 2026 - Token usage screen" tags={["BYOK"]}>
    The token usage screen has been redesigned to make consumption by organization and period easier to understand. It is now simpler to track usage and see how tokens are being consumed over time.

    Video: [https://kodus.io/wp-content/uploads/2026/06/token\_usage.mp4](https://kodus.io/wp-content/uploads/2026/06/token_usage.mp4)
  </Update>

  <Update label="June 15, 2026 - Self-hosted analytics" tags={["Self-hosted"]}>
    We fixed the analytics integration for self-hosted deployments. Usage metrics now appear correctly in the dashboard.
  </Update>

  <Update label="June 15, 2026 - Issue cache" tags={["AI Engine"]}>
    The issue count in the sidebar could sometimes become outdated. The cache is now invalidated correctly after changes.
  </Update>

  <Update label="June 15, 2026 - GitHub rate limit" tags={["GIT Provider"]}>
    We fixed a rate limit issue in cloud E2E tests. We now use round-robin across multiple bot accounts to better distribute requests.
  </Update>

  <Update label="June 15, 2026 - Notification routing" tags={["Notifications"]}>
    We fixed the behavior of targeted notifications when combined with audience settings. Notifications now reach the right people without duplicates.
  </Update>

  <Update label="June 15, 2026 - Centralized config sync" tags={["Kody Rules"]}>
    We fixed issues in the centralized sync of Kody Rules configurations across repositories. Sync now correctly handles multiple scopes, stale configurations, and merge-triggered updates.
  </Update>

  <Update label="June 8, 2026 - Moonshot Kimi support for BYOK" tags={["AI Engine", "BYOK"]}>
    We added support for Moonshot as a provider, compatible with the Anthropic API.

    You can now use the Kimi Coding Plan model in BYOK setups. To configure it, set the API\_MOONSHOT\_API\_KEY key and select the model in the organization preferences.

    See the Moonshot Kimi documentation for more setup details: [https://docs.kodus.io/knowledge\_base/en/how-to-use-moonshot-with-kodus](https://docs.kodus.io/knowledge_base/en/how-to-use-moonshot-with-kodus)
  </Update>

  <Update label="June 8, 2026 - Monthly token usage control" tags={["BYOK"]}>
    Organizations can now set monthly token consumption limits per model.

    Usage is shown in real time in the interface, with a progress bar. When usage reaches 80% of the limit, the team receives an email alert. If the limit is reached, additional reviews can be blocked automatically.

    Video: [https://kodus.io/wp-content/uploads/2026/06/token-usage.mov](https://kodus.io/wp-content/uploads/2026/06/token-usage.mov)

    See the Monthly Spend Limit documentation for more setup details: [https://docs.kodus.io/how\_to\_use/en/spend-limit](https://docs.kodus.io/how_to_use/en/spend-limit)
  </Update>

  <Update label="June 8, 2026 - More resilient review agent" tags={["AI Engine"]}>
    The review engine now handles empty or malformed LLM responses better. This reduces loops in edge cases and helps ensure valid suggestions continue to be delivered even when the provider returns an unexpected response.
  </Update>

  <Update label="June 8, 2026 - Telemetry for self-hosted environments" tags={["Self-hosted"]}>
    On-premise installations now automatically report health metrics, such as heartbeat, and usage data. The goal is to make diagnosis and support easier without exposing sensitive customer data.
  </Update>

  <Update label="June 8, 2026 - Faster Kody Rules" tags={["AI Engine"]}>
    We improved the loading and synchronization of custom rules. We also fixed the count of orphaned rules and made partial updates safer against race conditions.
  </Update>

  <Update label="June 8, 2026 - GitLab compatibility improvements" tags={["GIT Provider"]}>
    Support for GitLab 13.x in comment webhooks.

    Diff fallback for versions earlier than 15.7.

    Fixes for discussion threads and replies scoped by discussionId.

    Self-hosted development environment documentation.
  </Update>

  <Update label="June 8, 2026 - GitHub member list fix" tags={["GIT Provider", "Security"]}>
    Suspended users no longer appear in the member list for license assignment.
  </Update>

  <Update label="June 8, 2026 - Update Connection fix" tags={["GIT Provider"]}>
    Integration reauthentication now correctly clears the previous configuration.
  </Update>

  <Update label="June 8, 2026 - Integration reset fix" tags={["AI Engine"]}>
    Kody Rules linked to the repo or directory are now removed automatically.
  </Update>

  <Update label="June 8, 2026 - Release Freeze fix">
    Eligibility notifications only appear when the freeze is active.
  </Update>
</div>

<script>
  {`
    (() => {
      const filterSelector = ".kodus-changelog-filter-control";
      const itemSelector = ".kodus-changelog-filterable";
      const sectionSelector = ".kodus-changelog-section";
      const releaseSelector = ".kodus-changelog-release";

      const applyChangelogFilters = () => {
          const root = document.querySelector(".kodus-changelog-shell");

          if (!root) {
              return;
          }

          const selectedFilters = Array.from(root.querySelectorAll(filterSelector))
              .filter((input) => input.checked)
              .map((input) => input.id.replace("kodus-filter-", "filter-"));

          const isFiltered = selectedFilters.length > 0;

          root.querySelectorAll(filterSelector).forEach((input) => {
              input.closest(".kodus-changelog-filter-button")?.classList.toggle("is-selected", input.checked);
          });

          root.querySelectorAll(itemSelector).forEach((item) => {
              const shouldShow = !isFiltered || selectedFilters.some((filter) => item.classList.contains(filter));
              item.hidden = !shouldShow;
          });

          root.querySelectorAll(sectionSelector).forEach((section) => {
              const hasVisibleItems = Array.from(section.querySelectorAll(itemSelector)).some((item) => !item.hidden);
              section.hidden = isFiltered && !hasVisibleItems;
          });

          root.querySelectorAll(releaseSelector).forEach((release) => {
              const hasVisibleItems = Array.from(release.querySelectorAll(itemSelector)).some((item) => !item.hidden);
              release.hidden = isFiltered && !hasVisibleItems;
          });
      };

      document.addEventListener("change", (event) => {
          if (event.target.matches(filterSelector)) {
              applyChangelogFilters();
          }
      });

      window.addEventListener("pageshow", applyChangelogFilters);
      requestAnimationFrame(applyChangelogFilters);
    })();
    `}
</script>
