<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.8.4">Jekyll</generator><link href="https://codefresh.io/docs/changelog/feed.xml" rel="self" type="application/atom+xml" /><link href="https://codefresh.io/docs/" rel="alternate" type="text/html" /><updated>2026-10-13T09:58:30-05:00</updated><id>https://codefresh.io/docs/changelog/feed.xml</id><title type="html">Codefresh | Docs</title><subtitle>Codefresh DevOps platform for Argo. Ditch the scripts of the past. Get the best of DevOps in a single platform.</subtitle><entry><title type="html">Release Notes: September 2026</title><link href="https://codefresh.io/docs/posts/2026/09/01/release-notes/" rel="alternate" type="text/html" title="Release Notes: September 2026" /><published>2026-09-01T00:00:00-05:00</published><updated>2026-09-01T00:00:00-05:00</updated><id>https://codefresh.io/docs/posts/2026/09/01/release-notes</id><content type="html" xml:base="https://codefresh.io/docs/posts/2026/09/01/release-notes/">&lt;div class=&quot;bd-callout bd-callout-tip&quot;&gt;
  &lt;p&gt;This article is updated throughout the month as new releases become available.&lt;/p&gt;
&lt;/div&gt;

&lt;h2 id=&quot;features--enhancements&quot;&gt;Features &amp;amp; enhancements&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;request-caching-for-bitbucket-integrations&quot;&gt;Request caching for Bitbucket integrations&lt;/h4&gt;

&lt;p&gt;Every pipeline build sends a number of API requests to Bitbucket, for example, to read the pipeline YAML or to fetch commit details. Busy accounts can hit the Bitbucket API rate limit because the same content is requested many times a day.&lt;/p&gt;

&lt;p&gt;You can now enable request caching for a Bitbucket Git integration. When it is on, Codefresh stores Bitbucket API responses and serves repeated reads of the same content from the cache, so they no longer count against your rate limit.&lt;/p&gt;

&lt;p&gt;Caching is safe to use because only content pinned to a specific commit SHA is cached, such as file contents, commit objects, and diffstats. Anything that can change, including which commit a branch or tag points to, is always resolved live against Bitbucket, so builds never read stale data. If the cache is unavailable, Codefresh falls back to a live request.&lt;/p&gt;

&lt;figure class=&quot;my-4 my-md-5&quot;&gt;
  &lt;p class=&quot;mb-2&quot;&gt;
    
    
    &lt;a class=&quot;d-block mr-auto&quot; href=&quot;/docs/images/integrations/git/git-cache.png&quot; data-toggle=&quot;lightbox&quot; data-type=&quot;image&quot; style=&quot;max-width: 75%&quot;&gt;
    
      &lt;img class=&quot;img-fluid&quot; src=&quot;/docs/images/integrations/git/git-cache.png&quot; alt=&quot;Request caching for Bitbucket integrations&quot; /&gt;
    
    &lt;/a&gt;
    
  &lt;/p&gt;
  
  &lt;figcaption class=&quot;font-italic text-left&quot;&gt;Request caching for Bitbucket integrations&lt;/figcaption&gt;
  
&lt;/figure&gt;

&lt;p&gt;To enable it, edit your Bitbucket integration in &lt;strong&gt;Pipeline Integrations → Git&lt;/strong&gt; and turn on &lt;strong&gt;Cache requests to Bitbucket&lt;/strong&gt; in the &lt;strong&gt;Caching&lt;/strong&gt; section. The same section has a &lt;strong&gt;Clear cache&lt;/strong&gt; button for account administrators, which removes all stored entries for the integration, for example, after rotating its credentials.&lt;/p&gt;

&lt;p&gt;For details, see &lt;a href=&quot;/docs/docs/integrations/git-providers/#request-caching&quot;&gt;Request caching&lt;/a&gt; for Bitbucket.&lt;/p&gt;

&lt;h5 id=&quot;availability&quot;&gt;Availability&lt;/h5&gt;

&lt;table class=&quot;table table-bordered table-hover&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Installation&lt;/th&gt;
      &lt;th&gt;Status&lt;/th&gt;
      &lt;th&gt;Action required&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Cloud&lt;/td&gt;
      &lt;td&gt;Available now&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Hybrid&lt;/td&gt;
      &lt;td&gt;Available now&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;On-premises&lt;/td&gt;
      &lt;td&gt;Planned for Codefresh Platform 2.13&lt;/td&gt;
      &lt;td&gt;Upgrade to Platform 2.13 when it is released, enable &lt;code class=&quot;highlighter-rouge&quot;&gt;enableGitRequestsCache&lt;/code&gt; feature flag.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3 id=&quot;gitops&quot;&gt;GitOps&lt;/h3&gt;

&lt;h4 id=&quot;argo-cd-upgraded-to-35-in-gitops-runtime&quot;&gt;Argo CD upgraded to 3.5 in GitOps Runtime&lt;/h4&gt;

&lt;p&gt;GitOps Runtime 0.31.0 bumps the bundled Argo CD to version 3.5.2, bringing the latest upstream fixes and features to Codefresh GitOps. If you bring your own Argo CD (BYOA), the supported version range is now 3.3.x to 3.5.x.&lt;/p&gt;

&lt;p&gt;For the full list of changes and upgrade steps, see the &lt;a href=&quot;https://github.com/codefresh-io/gitops-runtime-helm/releases/tag/0.31.0&quot; target=&quot;_blank&quot;&gt;GitOps Runtime 0.31.0 release notes&lt;/a&gt; and the &lt;a href=&quot;https://argo-cd.readthedocs.io/en/stable/operator-manual/upgrading/3.4-3.5/&quot; target=&quot;_blank&quot;&gt;Argo CD 3.4 to 3.5 upgrade guide&lt;/a&gt;.&lt;/p&gt;

&lt;h5 id=&quot;availability-1&quot;&gt;Availability&lt;/h5&gt;

&lt;table class=&quot;table table-bordered table-hover&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Installation&lt;/th&gt;
      &lt;th&gt;Status&lt;/th&gt;
      &lt;th&gt;Action required&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Hybrid&lt;/td&gt;
      &lt;td&gt;GitOps Runtime &lt;a href=&quot;https://github.com/codefresh-io/gitops-runtime-helm/releases/tag/0.31.0&quot; target=&quot;_blank&quot;&gt;0.31.0&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Upgrade to GitOps Runtime 0.31.0 or later. Review the breaking changes first.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;On-premises&lt;/td&gt;
      &lt;td&gt;Planned for Codefresh Platform 2.13&lt;/td&gt;
      &lt;td&gt;Upgrade to Platform 2.13 when it is released, then upgrade to GitOps Runtime 0.31.0 or later. Review the breaking changes first.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug fixes&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines-1&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;entity-name-and-id-were-not-displayed-in-the-audit-log-for-some-entities&quot;&gt;Entity name and ID were not displayed in the Audit Log for some entities&lt;/h4&gt;

&lt;p&gt;In the Audit Log, the &lt;code class=&quot;highlighter-rouge&quot;&gt;Entity ID/Name&lt;/code&gt; column was empty for some entity types, such as Git contexts.&lt;/p&gt;

&lt;p&gt;Audited events for these entities now show the name and ID of the affected entity.&lt;/p&gt;

&lt;h5 id=&quot;availability-2&quot;&gt;Availability&lt;/h5&gt;

&lt;table class=&quot;table table-bordered table-hover&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Installation&lt;/th&gt;
      &lt;th&gt;Status&lt;/th&gt;
      &lt;th&gt;Action required&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Cloud&lt;/td&gt;
      &lt;td&gt;Available now&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Hybrid&lt;/td&gt;
      &lt;td&gt;Available now&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;On-premises&lt;/td&gt;
      &lt;td&gt;Planned for Codefresh Platform 2.13&lt;/td&gt;
      &lt;td&gt;Upgrade to Platform 2.13 when it is released.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h4 id=&quot;variables-exported-with-cf_export-could-resolve-to-an-outdated-value&quot;&gt;Variables exported with &lt;code class=&quot;highlighter-rouge&quot;&gt;cf_export&lt;/code&gt; could resolve to an outdated value&lt;/h4&gt;

&lt;p&gt;When a variable was exported with &lt;code class=&quot;highlighter-rouge&quot;&gt;cf_export&lt;/code&gt; more than once during a build, a following step could receive an earlier value instead of the last exported one. This happened whenever the latest exported value was identical to a value the variable had held before, whether from an earlier &lt;code class=&quot;highlighter-rouge&quot;&gt;cf_export&lt;/code&gt;, from the pipeline variables, or from the step’s own &lt;code class=&quot;highlighter-rouge&quot;&gt;environment&lt;/code&gt;. For example, exporting &lt;code class=&quot;highlighter-rouge&quot;&gt;MY_VAR=v1&lt;/code&gt;, then &lt;code class=&quot;highlighter-rouge&quot;&gt;MY_VAR=v2&lt;/code&gt;, then &lt;code class=&quot;highlighter-rouge&quot;&gt;MY_VAR=v1&lt;/code&gt; again resulted in &lt;code class=&quot;highlighter-rouge&quot;&gt;v2&lt;/code&gt; in the next step.&lt;/p&gt;

&lt;p&gt;Steps now always receive the value that was exported last for each variable.&lt;/p&gt;

&lt;h5 id=&quot;availability-3&quot;&gt;Availability&lt;/h5&gt;

&lt;table class=&quot;table table-bordered table-hover&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Installation&lt;/th&gt;
      &lt;th&gt;Status&lt;/th&gt;
      &lt;th&gt;Action required&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Cloud&lt;/td&gt;
      &lt;td&gt;Available now&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Hybrid&lt;/td&gt;
      &lt;td&gt;Classic Runtime &lt;a href=&quot;https://artifacthub.io/packages/helm/codefresh-runner/cf-runtime/10.5.6&quot; target=&quot;_blank&quot;&gt;10.5.6&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Upgrade to Runtime 10.5.6 or later.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;On-premises&lt;/td&gt;
      &lt;td&gt;Codefresh Platform &lt;a href=&quot;https://artifacthub.io/packages/helm/codefresh-onprem/codefresh/2.12.15&quot; target=&quot;_blank&quot;&gt;2.12.15&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Upgrade to Platform 2.12.15 or later.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h4 id=&quot;typed-steps-elected-on-workflowresult-no-longer-fail-with-plugin-failed&quot;&gt;Typed steps elected on &lt;code class=&quot;highlighter-rouge&quot;&gt;workflow.result&lt;/code&gt; no longer fail with &lt;code class=&quot;highlighter-rouge&quot;&gt;plugin failed&lt;/code&gt;&lt;/h4&gt;

&lt;p&gt;Typed steps, such as &lt;code class=&quot;highlighter-rouge&quot;&gt;codefresh-run&lt;/code&gt; or any other plugin-based step, that were elected through a &lt;code class=&quot;highlighter-rouge&quot;&gt;when.condition&lt;/code&gt; on &lt;code class=&quot;highlighter-rouge&quot;&gt;workflow.result&lt;/code&gt; (for example, &lt;code class=&quot;highlighter-rouge&quot;&gt;workflow.result == 'terminated'&lt;/code&gt;) always failed with an internal &lt;code class=&quot;highlighter-rouge&quot;&gt;plugin failed&lt;/code&gt; error. An equivalent freestyle step in the same position ran and completed successfully.&lt;/p&gt;

&lt;p&gt;Typed steps elected as a reaction to &lt;code class=&quot;highlighter-rouge&quot;&gt;workflow.result&lt;/code&gt; now run to completion and conclude on their real result.&lt;/p&gt;

&lt;p&gt;Additionally, typed steps now correctly work when a termination signal arrives before the step has started, instead of crashing.&lt;/p&gt;

&lt;h5 id=&quot;availability-4&quot;&gt;Availability&lt;/h5&gt;

&lt;table class=&quot;table table-bordered table-hover&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Installation&lt;/th&gt;
      &lt;th&gt;Status&lt;/th&gt;
      &lt;th&gt;Action required&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Cloud&lt;/td&gt;
      &lt;td&gt;Available now&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Hybrid&lt;/td&gt;
      &lt;td&gt;Classic Runtime &lt;a href=&quot;https://artifacthub.io/packages/helm/codefresh-runner/cf-runtime/10.5.6&quot; target=&quot;_blank&quot;&gt;10.5.6&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Upgrade to Runtime 10.5.6 or later.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;On-premises&lt;/td&gt;
      &lt;td&gt;Codefresh Platform &lt;a href=&quot;https://artifacthub.io/packages/helm/codefresh-onprem/codefresh/2.12.15&quot; target=&quot;_blank&quot;&gt;2.12.15&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Upgrade to Platform 2.12.15 or later.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;</content><author><name></name></author><summary type="html">This article is updated throughout the month as new releases become available.</summary></entry><entry><title type="html">Release Notes: August 2026</title><link href="https://codefresh.io/docs/posts/2026/08/01/release-notes/" rel="alternate" type="text/html" title="Release Notes: August 2026" /><published>2026-08-01T00:00:00-05:00</published><updated>2026-08-01T00:00:00-05:00</updated><id>https://codefresh.io/docs/posts/2026/08/01/release-notes</id><content type="html" xml:base="https://codefresh.io/docs/posts/2026/08/01/release-notes/">&lt;h2 id=&quot;features--enhancements&quot;&gt;Features &amp;amp; enhancements&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;fewer-redundant-api-calls-to-bitbucket&quot;&gt;Fewer redundant API calls to Bitbucket&lt;/h4&gt;

&lt;p&gt;Busy accounts that use Bitbucket Git integrations could hit the Bitbucket API rate limit because Codefresh sent redundant API requests.&lt;/p&gt;

&lt;p&gt;Codefresh now avoids redundant calls to the Bitbucket API, which significantly reduces the number of requests sent to Bitbucket for some endpoints.&lt;/p&gt;

&lt;h3 id=&quot;gitops&quot;&gt;GitOps&lt;/h3&gt;

&lt;h4 id=&quot;argo-cd-upgraded-to-34-in-gitops-runtime&quot;&gt;Argo CD upgraded to 3.4 in GitOps Runtime&lt;/h4&gt;

&lt;p&gt;The Argo CD bundled with the GitOps Runtime is upgraded to version 3.4.&lt;/p&gt;

&lt;p&gt;For upgrade considerations, see the &lt;a href=&quot;https://argo-cd.readthedocs.io/en/stable/operator-manual/upgrading/3.3-3.4/&quot; target=&quot;_blank&quot;&gt;Argo CD 3.3 to 3.4 upgrade guide&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug fixes&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines-1&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;one-codefresh-run-step-could-start-duplicate-child-builds&quot;&gt;One &lt;code class=&quot;highlighter-rouge&quot;&gt;codefresh-run&lt;/code&gt; step could start duplicate child builds&lt;/h4&gt;

&lt;p&gt;In some cases, a single &lt;code class=&quot;highlighter-rouge&quot;&gt;codefresh-run&lt;/code&gt; step started two child builds instead of one. Codefresh protects against duplicate runs when a request is retried, and this protection had gaps.&lt;/p&gt;

&lt;p&gt;The handling of repeated run requests is reworked to cover the gaps, so each &lt;code class=&quot;highlighter-rouge&quot;&gt;codefresh-run&lt;/code&gt; step starts only one build.&lt;/p&gt;

&lt;h4 id=&quot;builds-failed-to-start-when-bitbucket-returned-a-temporary-server-error&quot;&gt;Builds failed to start when Bitbucket returned a temporary server error&lt;/h4&gt;

&lt;p&gt;When Bitbucket returned a 500 error while Codefresh was reading the pipeline specification or commit details, the build failed with &lt;code class=&quot;highlighter-rouge&quot;&gt;Failed to run pipeline&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Codefresh now retries such requests in more cases and writes clearer log messages about the failed call.&lt;/p&gt;

&lt;h4 id=&quot;reset-volume-step-failed-after-upgrading-to-classic-runtime-1051&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Reset volume&lt;/code&gt; step failed after upgrading to Classic Runtime 10.5.1&lt;/h4&gt;

&lt;p&gt;After upgrading to Classic Runtime 10.5.1, the &lt;code class=&quot;highlighter-rouge&quot;&gt;Reset volume&lt;/code&gt; step failed on some builds, which sometimes prevented builds from starting.&lt;/p&gt;

&lt;p&gt;The issue is fixed now.&lt;/p&gt;

&lt;h4 id=&quot;docker-cleaner-in-the-dind-pod-used-an-outdated-docker-api-version&quot;&gt;Docker cleaner in the &lt;code class=&quot;highlighter-rouge&quot;&gt;dind&lt;/code&gt; pod used an outdated Docker API version&lt;/h4&gt;

&lt;p&gt;The &lt;code class=&quot;highlighter-rouge&quot;&gt;docker-cleaner&lt;/code&gt; that runs inside the &lt;code class=&quot;highlighter-rouge&quot;&gt;dind&lt;/code&gt; pod used a hardcoded Docker API version. With a current Docker daemon, &lt;code class=&quot;highlighter-rouge&quot;&gt;dind&lt;/code&gt; logged &lt;code class=&quot;highlighter-rouge&quot;&gt;client version &amp;lt;x&amp;gt; is too old. Minimum supported API version is &amp;lt;y&amp;gt;&lt;/code&gt;, and the cleaner could not work correctly.&lt;/p&gt;

&lt;p&gt;The cleaner no longer uses a fixed version and negotiates the API version with the Docker daemon.&lt;/p&gt;

&lt;h4 id=&quot;pipeline-name-and-description-were-rendered-incorrectly-on-the-pipeline-settings-page&quot;&gt;Pipeline name and description were rendered incorrectly on the pipeline settings page&lt;/h4&gt;

&lt;p&gt;On the pipeline settings page, the pipeline name was displayed as plain text instead of a non-editable field, and the description field looked incorrect.&lt;/p&gt;

&lt;p&gt;Both fields are now displayed correctly.&lt;/p&gt;

&lt;h3 id=&quot;gitops-1&quot;&gt;GitOps&lt;/h3&gt;

&lt;h4 id=&quot;runtime-health-did-not-show-the-real-status-of-runtime-applications&quot;&gt;Runtime Health did not show the real status of runtime applications&lt;/h4&gt;

&lt;p&gt;When the runtime could not clone its Git sources, for example, because the runtime token expired, the runtime applications changed to the &lt;code class=&quot;highlighter-rouge&quot;&gt;Unknown&lt;/code&gt; sync status. The Runtime Status panel still showed the runtime and its sources as healthy (green).&lt;/p&gt;

&lt;p&gt;The Runtime Status panel now reflects the status of the runtime applications.&lt;/p&gt;</content><author><name></name></author><summary type="html">Features &amp;amp; enhancements</summary></entry><entry><title type="html">Release Notes: July 2026</title><link href="https://codefresh.io/docs/posts/2026/07/01/release-notes/" rel="alternate" type="text/html" title="Release Notes: July 2026" /><published>2026-07-01T00:00:00-05:00</published><updated>2026-07-01T00:00:00-05:00</updated><id>https://codefresh.io/docs/posts/2026/07/01/release-notes</id><content type="html" xml:base="https://codefresh.io/docs/posts/2026/07/01/release-notes/">&lt;h2 id=&quot;features--enhancements&quot;&gt;Features &amp;amp; enhancements&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;select-multiple-shared-configurations-at-once&quot;&gt;Select multiple Shared Configurations at once&lt;/h4&gt;

&lt;p&gt;When an account had many Shared Configurations to add as pipeline variables, you had to add them one at a time.&lt;/p&gt;

&lt;p&gt;When you add pipeline variables, you can now select multiple Shared Configurations at once in a single dialog.&lt;/p&gt;

&lt;p&gt;For details, see &lt;a href=&quot;/docs/docs/pipelines/configuration/shared-configuration/&quot;&gt;Shared Configuration&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;msteams-notifier-step-supports-power-automate-workflows&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;msteams-notifier&lt;/code&gt; step supports Power Automate Workflows&lt;/h4&gt;

&lt;p&gt;Microsoft is retiring the legacy Office 365 connectors and incoming webhooks in Microsoft Teams, which the &lt;code class=&quot;highlighter-rouge&quot;&gt;msteams-notifier&lt;/code&gt; step used to post messages.&lt;/p&gt;

&lt;p&gt;The step can now send notifications through Power Automate Workflows. Existing pipelines keep working without changes. To use a workflow, set these arguments on the step:&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;MSTeamsNotification&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;msteams-notifier&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;arguments&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;USE_POWER_AUTOMATE_WORKFLOWS&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;true'&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;MSTEAMS_WORKFLOW_URL&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&amp;lt;workflow_url&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;gitops&quot;&gt;GitOps&lt;/h3&gt;

&lt;h4 id=&quot;improved-update-git-runtime-credentials-drawer&quot;&gt;Improved “Update Git Runtime Credentials” drawer&lt;/h4&gt;

&lt;p&gt;For an installed GitOps Runtime, the &lt;strong&gt;Update Git Runtime Credentials&lt;/strong&gt; drawer gave little guidance and linked to the page about personal tokens instead of runtime tokens.&lt;/p&gt;

&lt;p&gt;The drawer now has the same content as the &lt;strong&gt;Configure Git Credentials&lt;/strong&gt; step of the Runtime installation wizard, including a link to the token generation page and instructions about the required token scopes.&lt;/p&gt;

&lt;p&gt;For the scopes required for each Git provider, see &lt;a href=&quot;/docs/docs/security/git-tokens/&quot;&gt;Git tokens for GitOps&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug fixes&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines-1&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;codecov-reporter-step-failed-on-every-run&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;codecov-reporter&lt;/code&gt; step failed on every run&lt;/h4&gt;

&lt;p&gt;The &lt;code class=&quot;highlighter-rouge&quot;&gt;codecov-reporter&lt;/code&gt; step failed with &lt;code class=&quot;highlighter-rouge&quot;&gt;gpg: no valid OpenPGP data found&lt;/code&gt; on every run.&lt;/p&gt;

&lt;p&gt;The step is fixed in version 2.1.1.&lt;/p&gt;

&lt;h4 id=&quot;deploy-step-failed-with-referenceerror-_-is-not-defined&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;deploy&lt;/code&gt; step failed with &lt;code class=&quot;highlighter-rouge&quot;&gt;ReferenceError: _ is not defined&lt;/code&gt;&lt;/h4&gt;

&lt;p&gt;In Classic Runtime 10.3.7, the &lt;code class=&quot;highlighter-rouge&quot;&gt;deploy&lt;/code&gt; step failed with &lt;code class=&quot;highlighter-rouge&quot;&gt;ReferenceError: _ is not defined&lt;/code&gt; when it created an image pull secret.&lt;/p&gt;

&lt;p&gt;This is fixed in Classic Runtime 10.3.8.&lt;/p&gt;

&lt;h4 id=&quot;ecr-integration-with-a-service-account-ignored-the-configured-region&quot;&gt;ECR integration with a service account ignored the configured region&lt;/h4&gt;

&lt;p&gt;When an Amazon ECR integration resolved credentials from a service account, the region set in the integration was ignored. Builds logged in to ECR using the region of the runtime instead, so images had to be in the same region as the runtime.&lt;/p&gt;

&lt;p&gt;The configured region is now used. The fix is available in Classic Runtime 10.3.8.&lt;/p&gt;

&lt;h4 id=&quot;cron-builds-were-occasionally-duplicated&quot;&gt;Cron builds were occasionally duplicated&lt;/h4&gt;

&lt;p&gt;Cron-triggered builds were sometimes started more than once for a single scheduled run, because the idempotency token of a build request was not always handled correctly. It is fixed now.&lt;/p&gt;

&lt;h4 id=&quot;pipelines-using-a-git-integration-with--in-its-name-could-not-be-retrieved&quot;&gt;Pipelines using a Git integration with &lt;code class=&quot;highlighter-rouge&quot;&gt;/&lt;/code&gt; in its name could not be retrieved&lt;/h4&gt;

&lt;p&gt;When a pipeline had a Git trigger that used a Git integration with a slash in its name, the pipeline was created but could not be opened, edited, or run. Requests for it returned “pipeline not found”, and the UI reported that the pipeline was deleted.&lt;/p&gt;

&lt;p&gt;Such pipelines can now be retrieved and managed normally.&lt;/p&gt;

&lt;h4 id=&quot;runtime-installation-failed-when-the-api-token-had-trailing-whitespace&quot;&gt;Runtime installation failed when the API token had trailing whitespace&lt;/h4&gt;

&lt;p&gt;Installing a Classic Runtime failed during certificate signing with &lt;code class=&quot;highlighter-rouge&quot;&gt;Cannot sign certificates&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;SyntaxError: Unexpected token 'C', &quot;Content-Le&quot;... is not valid JSON&lt;/code&gt;. This happened when the runtime API token contained a trailing newline, for example, when it was stored in a secret with an extra empty line.&lt;/p&gt;

&lt;p&gt;This no longer prevents the installation.&lt;/p&gt;

&lt;h3 id=&quot;gitops-1&quot;&gt;GitOps&lt;/h3&gt;

&lt;h4 id=&quot;incorrect-scopes-documented-for-bitbucket-runtime-tokens&quot;&gt;Incorrect scopes documented for Bitbucket runtime tokens&lt;/h4&gt;

&lt;p&gt;The documentation listed incorrect scopes for Bitbucket tokens used by a GitOps Runtime, so a token created with the documented scopes could be rejected when you updated the runtime credentials.&lt;/p&gt;

&lt;p&gt;The documentation now lists the correct scopes. For the full list, see &lt;a href=&quot;/docs/docs/security/git-tokens/&quot;&gt;Git tokens for GitOps&lt;/a&gt;.&lt;/p&gt;</content><author><name></name></author><summary type="html">Features &amp;amp; enhancements</summary></entry><entry><title type="html">Release Notes: June 2026</title><link href="https://codefresh.io/docs/posts/2026/06/01/release-notes/" rel="alternate" type="text/html" title="Release Notes: June 2026" /><published>2026-06-01T00:00:00-05:00</published><updated>2026-06-01T00:00:00-05:00</updated><id>https://codefresh.io/docs/posts/2026/06/01/release-notes</id><content type="html" xml:base="https://codefresh.io/docs/posts/2026/06/01/release-notes/">&lt;h2 id=&quot;features--enhancements&quot;&gt;Features &amp;amp; enhancements&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;reauthorize-bitbucket-oauth-git-contexts&quot;&gt;Reauthorize Bitbucket OAuth Git contexts&lt;/h4&gt;

&lt;p&gt;Bitbucket Git contexts that use OAuth could not be de-authorized and then authorized again. This became a problem when the underlying OAuth application credentials changed, because existing contexts stopped working and could not be reconnected.&lt;/p&gt;

&lt;p&gt;You can now de-authorize a Bitbucket OAuth Git context and authorize it again, so that existing contexts can be reconnected against the current OAuth application without recreating them.&lt;/p&gt;

&lt;p&gt;For details on Bitbucket authentication methods, see &lt;a href=&quot;/docs/docs/integrations/git-providers/&quot;&gt;Git provider pipeline integrations&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;github-action-executor-step-deprecated&quot;&gt;GitHub Action Executor step deprecated&lt;/h4&gt;

&lt;p&gt;The &lt;code class=&quot;highlighter-rouge&quot;&gt;github-action-executor&lt;/code&gt; step in the Steps Marketplace relied on the layout of GitHub Marketplace pages, and stopped working after GitHub changed those pages. The functionality has been unsupported for some time, and the step is now formally deprecated. The related page has been removed from the Codefresh documentation.&lt;/p&gt;

&lt;p&gt;If your pipelines use this step, replace it with a freestyle step that runs the tools you need.&lt;/p&gt;

&lt;h3 id=&quot;gitops&quot;&gt;GitOps&lt;/h3&gt;

&lt;h4 id=&quot;choose-between-git-permissions-and-rules-for-view-access-to-applications&quot;&gt;Choose between Git permissions and rules for View access to applications&lt;/h4&gt;

&lt;p&gt;By default, access to view GitOps applications is evaluated against the user’s permissions in the Git repositories of the applications. This made it hard to move to rule-based access control, because Git permissions kept applying on top of the rules.&lt;/p&gt;

&lt;p&gt;You can now disable Git-based View permissions for your account and rely only on the permission rules you configure. You manage this yourself on the GitOps Permissions page, in &lt;strong&gt;Account settings → Permissions&lt;/strong&gt;, and you can switch back at any time.&lt;/p&gt;

&lt;p&gt;Adding View rules has no effect on access until you turn off Git-based permissions. Permission rules do not restrict account administrators.&lt;/p&gt;

&lt;p&gt;For details on defining rules, see &lt;a href=&quot;/docs/docs/administration/account-user-management/gitops-abac/&quot;&gt;Access control for GitOps&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug fixes&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines-1&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;build-status-was-sometimes-incorrect-with-strict_fail_fast-true&quot;&gt;Build status was sometimes incorrect with &lt;code class=&quot;highlighter-rouge&quot;&gt;strict_fail_fast: true&lt;/code&gt;&lt;/h4&gt;

&lt;p&gt;For pipelines that used &lt;code class=&quot;highlighter-rouge&quot;&gt;mode: parallel&lt;/code&gt; together with &lt;code class=&quot;highlighter-rouge&quot;&gt;fail_fast: false&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;strict_fail_fast: true&lt;/code&gt;, the build status was sometimes reported as successful even though a step had failed. Running the same build repeatedly could produce different final statuses.&lt;/p&gt;

&lt;p&gt;Builds with these settings now always finish with the correct status. The fix is available in Classic Runtime 10.3.4.&lt;/p&gt;

&lt;h4 id=&quot;builds-failed-with-cannot-read-properties-of-undefined-reading-servicenetworkname-for-pipelines-managed-with-terraform&quot;&gt;Builds failed with &lt;code class=&quot;highlighter-rouge&quot;&gt;Cannot read properties of undefined (reading 'serviceNetworkName')&lt;/code&gt; for pipelines managed with Terraform&lt;/h4&gt;

&lt;p&gt;When a pipeline was created or updated through the Codefresh Terraform provider with &lt;code class=&quot;highlighter-rouge&quot;&gt;original_yaml_string&lt;/code&gt;, the &lt;code class=&quot;highlighter-rouge&quot;&gt;services&lt;/code&gt; section of the YAML was not saved in the pipeline specification. Builds that used service containers then failed with &lt;code class=&quot;highlighter-rouge&quot;&gt;Cannot read properties of undefined (reading 'serviceNetworkName')&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The Terraform provider now reads the &lt;code class=&quot;highlighter-rouge&quot;&gt;services&lt;/code&gt; section from &lt;code class=&quot;highlighter-rouge&quot;&gt;original_yaml_string&lt;/code&gt; and saves it in the pipeline specification. The fix is available in version 1.2.1 of the Terraform provider.&lt;/p&gt;

&lt;h4 id=&quot;okta-team-sync-failed-with-a-concurrency-limit-error&quot;&gt;Okta team sync failed with a concurrency limit error&lt;/h4&gt;

&lt;p&gt;Syncing teams from Okta sent many requests in parallel. Okta rejected them with &lt;code class=&quot;highlighter-rouge&quot;&gt;This API token has made too many concurrent requests&lt;/code&gt;, so the sync did not complete.&lt;/p&gt;

&lt;p&gt;Codefresh now keeps the sync within the Okta concurrency limit.&lt;/p&gt;

&lt;h3 id=&quot;gitops-1&quot;&gt;GitOps&lt;/h3&gt;

&lt;h4 id=&quot;commit-statuses-request-failed-for-releases-without-commits&quot;&gt;Commit statuses request failed for releases without commits&lt;/h4&gt;

&lt;p&gt;Requesting commit statuses for a release that had no commits failed with an error, and commit statuses were not displayed.&lt;/p&gt;

&lt;p&gt;The request now completes for releases without commits.&lt;/p&gt;</content><author><name></name></author><summary type="html">Features &amp;amp; enhancements</summary></entry><entry><title type="html">Release Notes: May 2026</title><link href="https://codefresh.io/docs/posts/2026/05/01/release-notes/" rel="alternate" type="text/html" title="Release Notes: May 2026" /><published>2026-05-01T00:00:00-05:00</published><updated>2026-05-01T00:00:00-05:00</updated><id>https://codefresh.io/docs/posts/2026/05/01/release-notes</id><content type="html" xml:base="https://codefresh.io/docs/posts/2026/05/01/release-notes/">&lt;h2 id=&quot;features--enhancements&quot;&gt;Features &amp;amp; enhancements&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;updated-kubectl-versions-in-the-kubernetes-deploy-step&quot;&gt;Updated &lt;code class=&quot;highlighter-rouge&quot;&gt;kubectl&lt;/code&gt; versions in the Kubernetes deploy step&lt;/h4&gt;

&lt;p&gt;The &lt;code class=&quot;highlighter-rouge&quot;&gt;deploy&lt;/code&gt; step uses a bundled &lt;code class=&quot;highlighter-rouge&quot;&gt;kubectl&lt;/code&gt; client and supports the three most recent Kubernetes minor versions. With the release of Kubernetes 1.35 and the end of life of 1.32, the supported &lt;code class=&quot;highlighter-rouge&quot;&gt;kubectl&lt;/code&gt; versions in the step were updated accordingly.&lt;/p&gt;

&lt;p&gt;For details on the step, see &lt;a href=&quot;/docs/docs/pipelines/steps/deploy/&quot;&gt;Deploy step&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug fixes&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines-1&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;git-clone-step-did-not-download-git-lfs-files&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;git-clone&lt;/code&gt; step did not download Git LFS files&lt;/h4&gt;

&lt;p&gt;After the &lt;code class=&quot;highlighter-rouge&quot;&gt;git-clone&lt;/code&gt; step release, cloning a repository that tracks files with Git LFS returned only the small pointer files instead of the actual content. This could break later steps that depend on those files, such as image builds.&lt;/p&gt;

&lt;p&gt;Git LFS files are now downloaded as expected.&lt;/p&gt;

&lt;h4 id=&quot;kubernetes-resources-were-not-shown-in-the-codefresh-ui&quot;&gt;Kubernetes resources were not shown in the Codefresh UI&lt;/h4&gt;

&lt;p&gt;Kubernetes resources were not shown in the Codefresh UI for affected runtimes.&lt;/p&gt;

&lt;p&gt;The platform-side configuration that caused this issue was corrected, and resources are now displayed correctly in the Codefresh UI.&lt;/p&gt;

&lt;h4 id=&quot;codefresh-report-image-step-version-1011-was-missing-from-the-step-marketplace&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;codefresh-report-image&lt;/code&gt; step version 1.0.11 was missing from the Step Marketplace&lt;/h4&gt;

&lt;p&gt;Version 1.0.11 of the &lt;code class=&quot;highlighter-rouge&quot;&gt;codefresh-report-image&lt;/code&gt; step existed in the public steps repository, but it was not listed in the Step Marketplace and pipelines that referenced it failed.&lt;/p&gt;

&lt;p&gt;The version 1.0.11 is now published to the Step Marketplace.&lt;/p&gt;

&lt;h4 id=&quot;documentation-retries-are-disabled-in-debug-mode-for-the-codefresh-cli&quot;&gt;Documentation: retries are disabled in debug mode for the Codefresh CLI&lt;/h4&gt;

&lt;p&gt;Enabling debug mode in the Codefresh CLI turns off automatic retries of failed requests, so that the exact network errors can be captured in the logs. Because of this, temporary network issues, such as socket hangups, fail the command immediately. For example, a &lt;code class=&quot;highlighter-rouge&quot;&gt;codefresh-run&lt;/code&gt; step could terminate its child build on such a failure.&lt;/p&gt;

&lt;p&gt;This behavior is now documented in &lt;a href=&quot;/docs/docs/kb/articles/debug-mode-cli/&quot;&gt;How To: Enable debug mode when using Codefresh CLI&lt;/a&gt;. Use debug mode for troubleshooting rather than for everyday builds.&lt;/p&gt;

&lt;h3 id=&quot;gitops&quot;&gt;GitOps&lt;/h3&gt;

&lt;h4 id=&quot;image-reporting-failed-in-gitops-runtime&quot;&gt;Image reporting failed in GitOps Runtime&lt;/h4&gt;

&lt;p&gt;Image reporting steps in GitOps workflows failed after upgrading to GitOps Runtime 0.29.8. Pipelines using the &lt;code class=&quot;highlighter-rouge&quot;&gt;codefresh-report-image&lt;/code&gt; step failed with &lt;code class=&quot;highlighter-rouge&quot;&gt;TypeError: Cannot set properties of undefined (setting 'repoDigest')&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;GitOps Runtime 0.29.9 includes updated image enrichment and reporting images that fix the error. If you applied a workaround by overriding the &lt;code class=&quot;highlighter-rouge&quot;&gt;reportImage&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;gitEnrichment&lt;/code&gt;, and &lt;code class=&quot;highlighter-rouge&quot;&gt;jiraEnrichment&lt;/code&gt; image tags in your values, remove the override when you upgrade.&lt;/p&gt;

&lt;h4 id=&quot;cap-app-proxy-could-not-write-to-tmp-in-restricted-environments&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;cap-app-proxy&lt;/code&gt; could not write to &lt;code class=&quot;highlighter-rouge&quot;&gt;/tmp&lt;/code&gt; in restricted environments&lt;/h4&gt;

&lt;p&gt;After upgrading to GitOps Runtime 0.29.9, &lt;code class=&quot;highlighter-rouge&quot;&gt;cap-app-proxy&lt;/code&gt; failed to clone Git repositories with &lt;code class=&quot;highlighter-rouge&quot;&gt;could not create leading directories of '/tmp/...': Permission denied&lt;/code&gt;. This affected clusters that run containers with a read-only root file system, such as OpenShift, and blocked the upgrade.&lt;/p&gt;

&lt;p&gt;This is fixed in GitOps Runtime 0.29.10. Upgrade to GitOps Runtime 0.29.10 or later. If you added an &lt;code class=&quot;highlighter-rouge&quot;&gt;emptyDir&lt;/code&gt; volume mounted at &lt;code class=&quot;highlighter-rouge&quot;&gt;/tmp&lt;/code&gt; for &lt;code class=&quot;highlighter-rouge&quot;&gt;cap-app-proxy&lt;/code&gt; as a workaround, you can remove it.&lt;/p&gt;</content><author><name></name></author><summary type="html">Features &amp;amp; enhancements</summary></entry><entry><title type="html">Release Notes: April 2026</title><link href="https://codefresh.io/docs/posts/2026/04/01/release-notes/" rel="alternate" type="text/html" title="Release Notes: April 2026" /><published>2026-04-01T00:00:00-05:00</published><updated>2026-04-01T00:00:00-05:00</updated><id>https://codefresh.io/docs/posts/2026/04/01/release-notes</id><content type="html" xml:base="https://codefresh.io/docs/posts/2026/04/01/release-notes/">&lt;h2 id=&quot;features--enhancements&quot;&gt;Features &amp;amp; enhancements&lt;/h2&gt;

&lt;h3 id=&quot;gitops&quot;&gt;GitOps&lt;/h3&gt;

&lt;h4 id=&quot;cap-app-proxy-runs-as-a-non-root-user&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;cap-app-proxy&lt;/code&gt; runs as a non-root user&lt;/h4&gt;

&lt;p&gt;Security policies in some organizations do not allow containers to run as root, which blocked the use of the &lt;code class=&quot;highlighter-rouge&quot;&gt;cap-app-proxy&lt;/code&gt; component of the GitOps Runtime.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;cap-app-proxy&lt;/code&gt; now runs under a non-root user. This change is available starting with GitOps Runtime 0.29.4.&lt;/p&gt;

&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug fixes&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;git-clone-step-failed-with-grep-command-not-found-and-could-use-outdated-code&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;git-clone&lt;/code&gt; step failed with &lt;code class=&quot;highlighter-rouge&quot;&gt;grep: command not found&lt;/code&gt; and could use outdated code&lt;/h4&gt;

&lt;p&gt;A recent update of the &lt;code class=&quot;highlighter-rouge&quot;&gt;git-clone&lt;/code&gt; step image was built without the &lt;code class=&quot;highlighter-rouge&quot;&gt;grep&lt;/code&gt; utility. The step logged &lt;code class=&quot;highlighter-rouge&quot;&gt;grep: command not found&lt;/code&gt;, and as a result skipped resetting the checked-out branch to the latest commit. Builds that reused an existing volume could therefore build outdated code, unless &lt;strong&gt;Reset pipeline volume&lt;/strong&gt; was enabled in the trigger settings.&lt;/p&gt;

&lt;p&gt;The image now includes all required utilities, and the step updates the branch to the latest changes again. The fix is available in Classic Runtime 10.0.13.&lt;/p&gt;

&lt;h4 id=&quot;bitbucket-integrations-failed-after-bitbucket-deprecated-some-api-endpoints&quot;&gt;Bitbucket integrations failed after Bitbucket deprecated some API endpoints&lt;/h4&gt;

&lt;p&gt;Bitbucket deprecated several API endpoints that Codefresh relied on, and calls to them started to return HTTP 410. As a result, creating a Bitbucket integration with an API token failed with &lt;code class=&quot;highlighter-rouge&quot;&gt;Error occurred while verifying credentials&lt;/code&gt;, and builds that used a Bitbucket OAuth integration intermittently failed with rate limit errors.&lt;/p&gt;

&lt;p&gt;Codefresh no longer uses the deprecated endpoints, so you can create Bitbucket integrations with an API token again, and builds with OAuth integrations no longer fail with these rate limit errors.&lt;/p&gt;

&lt;p&gt;All Codefresh accounts that use OAuth share a single Bitbucket OAuth consumer and its rate limit quota, so we recommend the API token method for busy accounts. For details, see &lt;a href=&quot;/docs/docs/integrations/git-providers/#bitbucket&quot;&gt;Bitbucket&lt;/a&gt; in the Git provider integrations documentation.&lt;/p&gt;

&lt;h3 id=&quot;gitops-1&quot;&gt;GitOps&lt;/h3&gt;

&lt;h4 id=&quot;github-token-link-generated-after-runtime-installation-did-not-request-all-required-permissions&quot;&gt;GitHub token link generated after runtime installation did not request all required permissions&lt;/h4&gt;

&lt;p&gt;After you installed a GitOps Runtime, the link that Codefresh generated for creating a GitHub token did not include the &lt;code class=&quot;highlighter-rouge&quot;&gt;user:email&lt;/code&gt; permission. This permission is required to initialize the Internal Shared Configuration repository from the Runtime.&lt;/p&gt;

&lt;p&gt;The generated link now requests all required permissions.&lt;/p&gt;</content><author><name></name></author><summary type="html">Features &amp;amp; enhancements</summary></entry><entry><title type="html">Release Notes: March 2026</title><link href="https://codefresh.io/docs/posts/2026/03/01/release-notes/" rel="alternate" type="text/html" title="Release Notes: March 2026" /><published>2026-03-01T00:00:00-06:00</published><updated>2026-03-01T00:00:00-06:00</updated><id>https://codefresh.io/docs/posts/2026/03/01/release-notes</id><content type="html" xml:base="https://codefresh.io/docs/posts/2026/03/01/release-notes/">&lt;h2 id=&quot;features--enhancements&quot;&gt;Features &amp;amp; enhancements&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;force-refresh-bitbucket-oauth-tokens-with-the-codefresh-cli&quot;&gt;Force-refresh Bitbucket OAuth tokens with the Codefresh CLI&lt;/h4&gt;

&lt;p&gt;Pipelines that read a Bitbucket OAuth token from a Git integration, for example, to call the Bitbucket API directly, could receive a token that was already expired or about to expire. The &lt;code class=&quot;highlighter-rouge&quot;&gt;expires&lt;/code&gt; field in the integration data does not show when the token actually expires, so it cannot be used to decide when to refresh.&lt;/p&gt;

&lt;p&gt;You can now get a valid token on demand with &lt;code class=&quot;highlighter-rouge&quot;&gt;codefresh get context&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;--prepare&lt;/code&gt; now works for Bitbucket OAuth integrations. It refreshes the token only if it has expired or expires in less than 10 minutes, so the returned token stays valid for at least the next 10 minutes.&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;--force-prepare&lt;/code&gt; refreshes the token immediately, even if the current one is still valid. It is available in Codefresh CLI 1.1.0 and later.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;codefresh get context &lt;span class=&quot;s1&quot;&gt;'Bitbucket-OAuth-integration-name'&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--force-prepare&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-o&lt;/span&gt; json | jq &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; .spec.data.auth.password
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Run the command before any step that calls Bitbucket. For details on working with contexts, see &lt;a href=&quot;/docs/docs/pipelines/configuration/shared-configuration/&quot;&gt;Shared configuration&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;stricter-aws-region-validation-for-aws-integrations&quot;&gt;Stricter AWS region validation for AWS integrations&lt;/h4&gt;

&lt;p&gt;Region values for AWS-based integrations were not checked on the server. A mistyped region was accepted when saving the integration and only failed later, when a build used it.&lt;/p&gt;

&lt;p&gt;When strict validation is enabled for your account, Codefresh now checks the region against the list of public AWS regions supported by the AWS SDK. The check applies to Amazon ECR integrations, AWS S3 Helm integrations, and the &lt;code class=&quot;highlighter-rouge&quot;&gt;report-image-info&lt;/code&gt; enricher.&lt;/p&gt;

&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug fixes&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines-1&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;pipelines-could-fail-to-start-when-bitbucket-returned-an-incomplete-response&quot;&gt;Pipelines could fail to start when Bitbucket returned an incomplete response&lt;/h4&gt;

&lt;p&gt;Builds, including builds started by the &lt;code class=&quot;highlighter-rouge&quot;&gt;codefresh-run&lt;/code&gt; step, sometimes failed with &lt;code class=&quot;highlighter-rouge&quot;&gt;Failed to run pipeline&lt;/code&gt; when the Bitbucket API timed out or returned an error while Codefresh was reading the latest commit. The underlying error was not retried and was reported as a generic failure. This happened mostly during Bitbucket maintenance windows and incidents, and mainly affected pipelines with Bitbucket triggers.&lt;/p&gt;

&lt;p&gt;Codefresh now retries these requests when they fail with a connection error or an error returned by the Git provider, and handles an empty commit response without failing with an internal error.&lt;/p&gt;

&lt;h4 id=&quot;pipelines-could-not-be-started-from-the-ui-after-a-commit-made-with-a-bitbucket-repository-access-token&quot;&gt;Pipelines could not be started from the UI after a commit made with a Bitbucket repository access token&lt;/h4&gt;

&lt;p&gt;When the last commit of a branch was made with a Bitbucket repository access token, starting the pipeline manually from the UI failed with the &lt;code class=&quot;highlighter-rouge&quot;&gt;Error building service&lt;/code&gt; message and the build was not triggered.&lt;/p&gt;

&lt;p&gt;Pipelines now start normally when the last commit was made with a repository access token.&lt;/p&gt;

&lt;h4 id=&quot;builds-could-fail-with-failed-to-write-template-file-into-filesystem&quot;&gt;Builds could fail with “Failed to write template file into filesystem”&lt;/h4&gt;

&lt;p&gt;On runtimes with a shared filesystem, builds occasionally failed with &lt;code class=&quot;highlighter-rouge&quot;&gt;Failed to prepare plugin. Failed to write template file into filesystem&lt;/code&gt;, mostly when many pipelines were started at the same time. The failure was caused by a container that could not be stopped after the file was written.&lt;/p&gt;

&lt;p&gt;Builds no longer fail when this specific container stop error occurs.&lt;/p&gt;

&lt;h4 id=&quot;cron-triggers-sometimes-did-not-start-pipelines&quot;&gt;Cron triggers sometimes did not start pipelines&lt;/h4&gt;

&lt;p&gt;Some pipelines with cron triggers were not started at the scheduled time. The services that handle cron triggers were restarted without being reported as crashed, and the scheduled runs that fell into that window were missed.&lt;/p&gt;

&lt;p&gt;Scheduled pipelines now start as configured.&lt;/p&gt;

&lt;h4 id=&quot;quick-search-opened-a-malformed-link-for-projects-and-pipelines-with-special-characters&quot;&gt;Quick search opened a malformed link for projects and pipelines with special characters&lt;/h4&gt;

&lt;p&gt;When a project or pipeline name contained a special character such as &lt;code class=&quot;highlighter-rouge&quot;&gt;+&lt;/code&gt;, the link from Quick search was not encoded correctly. Opening it either loaded indefinitely or redirected to a different pipeline.&lt;/p&gt;

&lt;p&gt;Quick search now encodes project and pipeline names in the link, so the correct pipeline opens.&lt;/p&gt;

&lt;h3 id=&quot;gitops&quot;&gt;GitOps&lt;/h3&gt;

&lt;h4 id=&quot;the-gitops-runtime-pre-install-validation-rejected-supported-argo-cd-versions&quot;&gt;The GitOps Runtime pre-install validation rejected supported Argo CD versions&lt;/h4&gt;

&lt;p&gt;When upgrading to GitOps Runtime 0.28.0 or later with your own Argo CD (BYOA), the validation hook failed with an error such as &lt;code class=&quot;highlighter-rouge&quot;&gt;Argo CD version v3.3.2 does not satisfy required range '&amp;gt;=3 &amp;lt;=3.2'&lt;/code&gt;, even though the release notes listed the version as supported. The workaround was to set &lt;code class=&quot;highlighter-rouge&quot;&gt;installer.skipValidation: true&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The validation now uses the correct supported Argo CD version range, and the upgrade no longer needs the validation to be skipped.&lt;/p&gt;</content><author><name></name></author><summary type="html">Features &amp;amp; enhancements</summary></entry><entry><title type="html">Release Notes: February 2026</title><link href="https://codefresh.io/docs/posts/2026/02/01/release-notes/" rel="alternate" type="text/html" title="Release Notes: February 2026" /><published>2026-02-01T00:00:00-06:00</published><updated>2026-02-01T00:00:00-06:00</updated><id>https://codefresh.io/docs/posts/2026/02/01/release-notes</id><content type="html" xml:base="https://codefresh.io/docs/posts/2026/02/01/release-notes/">&lt;h2 id=&quot;features--enhancements&quot;&gt;Features &amp;amp; enhancements&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;api-token-authentication-for-bitbucket-cloud-integrations&quot;&gt;API token authentication for Bitbucket Cloud integrations&lt;/h4&gt;

&lt;p&gt;Bitbucket is deprecating App passwords in favor of API tokens, and OAuth2 connections to Bitbucket Cloud share a single API rate limit across all Codefresh accounts that use them.&lt;/p&gt;

&lt;p&gt;You can now connect a Bitbucket Cloud Git integration with an API token. The Bitbucket Git integration has a new &lt;strong&gt;API Token&lt;/strong&gt; tab where you enter your Bitbucket account email and an API token. Codefresh verifies that the token has the required scopes before saving the integration.&lt;/p&gt;

&lt;p&gt;To use it, add or edit your Bitbucket integration in &lt;strong&gt;Pipeline Integrations → Git&lt;/strong&gt; and select the &lt;strong&gt;API Token&lt;/strong&gt; tab. For the list of required scopes and how to create the token, see &lt;a href=&quot;/docs/docs/integrations/git-providers/#api-token&quot;&gt;Bitbucket API token&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug fixes&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines-1&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;webhook-secrets-of-existing-git-triggers-were-exposed-in-the-ui&quot;&gt;Webhook secrets of existing Git triggers were exposed in the UI&lt;/h4&gt;

&lt;p&gt;After you created a new Git trigger for a pipeline, the webhook secret and endpoint URL of the other Git triggers on the same pipeline were displayed in the UI until you refreshed the page. The pipeline API responses also included the secrets of all the triggers.&lt;/p&gt;

&lt;p&gt;Trigger secrets are now masked in these responses, so they are visible only when you first configure a trigger.&lt;/p&gt;

&lt;h4 id=&quot;conditional-expressions-were-silently-truncated-to-1024-characters&quot;&gt;Conditional expressions were silently truncated to 1024 characters&lt;/h4&gt;

&lt;p&gt;Step conditional expressions longer than 1024 characters were cut off before variable interpolation. A truncated expression was invalid, for example, with an unclosed parenthesis, so the condition was ignored with an error such as &lt;code class=&quot;highlighter-rouge&quot;&gt;Unclosed ( at character 1024&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The maximum length of a conditional expression is now 12,000 characters. Codefresh validates the length both in the pipeline definition and during the build, before and after variable interpolation, so an expression that is too long is reported instead of being cut off. For details, see &lt;a href=&quot;/docs/docs/pipelines/conditional-execution-of-steps/&quot;&gt;Conditional execution of steps&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;misleading-warning-in-the-advanced-options-of-a-trigger&quot;&gt;Misleading warning in the advanced options of a trigger&lt;/h4&gt;

&lt;p&gt;In the &lt;strong&gt;More options&lt;/strong&gt; of a Classic trigger, the warning said that disabling “Ignore Docker engine cache” or “Reset pipeline volume” might make builds slower, which is the opposite of what happens. The warning was also displayed below the reporting notification option, which implied that this option affects build speed.&lt;/p&gt;

&lt;p&gt;The warning now says that enabling one of the options might make builds slower, and is displayed right below &lt;strong&gt;Reset pipeline volume&lt;/strong&gt;.&lt;/p&gt;

&lt;h4 id=&quot;random-failed-to-write-subtree-controllers-errors-in-dind-pods&quot;&gt;Random &lt;code class=&quot;highlighter-rouge&quot;&gt;failed to write subtree controllers&lt;/code&gt; errors in &lt;code class=&quot;highlighter-rouge&quot;&gt;dind&lt;/code&gt; pods&lt;/h4&gt;

&lt;p&gt;In some builds, &lt;code class=&quot;highlighter-rouge&quot;&gt;dind&lt;/code&gt; pods logged the error &lt;code class=&quot;highlighter-rouge&quot;&gt;failed to write subtree controllers [cpuset cpu io memory hugetlb pids misc]&lt;/code&gt;. When it occurred, build metrics shown in the UI and reported through OpenTelemetry were affected. It was caused by a race condition on nodes that use cgroup v2: if side processes of the &lt;code class=&quot;highlighter-rouge&quot;&gt;dind&lt;/code&gt; entrypoint started late, the controllers required for step containers could not be enabled.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;highlighter-rouge&quot;&gt;dind&lt;/code&gt; image now moves its init process and all subprocesses to a dedicated cgroup at the very beginning of its startup. The fix is available in &lt;code class=&quot;highlighter-rouge&quot;&gt;dind&lt;/code&gt; 29.2.0-3.0.11 and in Classic Runtime 10.0.1.&lt;/p&gt;</content><author><name></name></author><summary type="html">Features &amp;amp; enhancements</summary></entry><entry><title type="html">Release Notes: January 2026</title><link href="https://codefresh.io/docs/posts/2026/01/01/release-notes/" rel="alternate" type="text/html" title="Release Notes: January 2026" /><published>2026-01-01T00:00:00-06:00</published><updated>2026-01-01T00:00:00-06:00</updated><id>https://codefresh.io/docs/posts/2026/01/01/release-notes</id><content type="html" xml:base="https://codefresh.io/docs/posts/2026/01/01/release-notes/">&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug fixes&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;pagination-flickered-on-the-projects-page&quot;&gt;Pagination flickered on the Projects page&lt;/h4&gt;

&lt;p&gt;On the Projects page, when the list had more than one page and you used the &lt;strong&gt;Next&lt;/strong&gt; or &lt;strong&gt;Previous&lt;/strong&gt; buttons, the pagination controls flickered.&lt;/p&gt;

&lt;p&gt;Pagination now stays stable when you move between pages.&lt;/p&gt;

&lt;h4 id=&quot;missing-border-on-the-next-button-on-the-pipelines-page&quot;&gt;Missing border on the Next button on the Pipelines page&lt;/h4&gt;

&lt;p&gt;On the Pipelines page, the &lt;strong&gt;Next&lt;/strong&gt; button lost its border when you selected the last page, which made it look different from the &lt;strong&gt;Previous&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Next&lt;/strong&gt; button now keeps its border on the last page.&lt;/p&gt;

&lt;h3 id=&quot;gitops&quot;&gt;GitOps&lt;/h3&gt;

&lt;h4 id=&quot;learn-more-about-releases-link-opened-the-wrong-page&quot;&gt;“Learn more about Releases” link opened the wrong page&lt;/h4&gt;

&lt;p&gt;For a product with no releases, the &lt;strong&gt;Learn more about Releases&lt;/strong&gt; link opened the Codefresh account creation guide instead of the documentation for releases.&lt;/p&gt;

&lt;p&gt;The link now opens &lt;a href=&quot;/docs/docs/products/releases-in-products/&quot;&gt;Releases for products&lt;/a&gt;.&lt;/p&gt;</content><author><name></name></author><summary type="html">Bug fixes</summary></entry><entry><title type="html">Release Notes: December 2025</title><link href="https://codefresh.io/docs/posts/2025/12/01/release-notes/" rel="alternate" type="text/html" title="Release Notes: December 2025" /><published>2025-12-01T00:00:00-06:00</published><updated>2025-12-01T00:00:00-06:00</updated><id>https://codefresh.io/docs/posts/2025/12/01/release-notes</id><content type="html" xml:base="https://codefresh.io/docs/posts/2025/12/01/release-notes/">&lt;h2 id=&quot;bug-fixes&quot;&gt;Bug fixes&lt;/h2&gt;

&lt;h3 id=&quot;classic-pipelines&quot;&gt;Classic Pipelines&lt;/h3&gt;

&lt;h4 id=&quot;sso-configuration-drawer-lost-your-input-when-you-clicked-outside-it&quot;&gt;SSO configuration drawer lost your input when you clicked outside it&lt;/h4&gt;

&lt;p&gt;When you configured a new single sign-on (SSO) provider in &lt;strong&gt;Account Settings → Single Sign-On&lt;/strong&gt;, clicking anywhere outside the configuration drawer closed it immediately. All the values you had entered were discarded, and you had to fill in the whole configuration again.&lt;/p&gt;

&lt;p&gt;This is now fixed.&lt;/p&gt;

&lt;p&gt;For details on configuring SSO, see &lt;a href=&quot;/docs/docs/administration/single-sign-on/&quot;&gt;Single Sign-On&lt;/a&gt;.&lt;/p&gt;</content><author><name></name></author><summary type="html">Bug fixes</summary></entry></feed>