Forgejo Runner v13.0.0 is available
Forgejo Runner v13.0.0 was released on August 3rd, 2026. This major release incorporates changes which may break current workflows for Forgejo Actions users. These changes are intended to improve the security, predictability, and maintainabilty of Forgejo Runner.
The complete release notes are at v13.0.0’s release page.
Breaking changes
Workflow Predictability
Forgejo Runner previously recognized a couple scenarios of invalid workflow syntax, logged a warning about the situation, and proceeded to run the workflow. These cases have been changed to errors.
Expression evaluation may trigger errors which now fail workflows. For example, if using ${{ format('Param: {0}, {1}', 'abc')}}, a message such as "The following format string references more arguments than were supplied will be output
and the job will terminate with an error.
Using strategy.matrix to exclude a value from a job matrix, where that matrix value does not exist, is also now an
error that will prevent a workflow from executing.
- fix: fail jobs, steps if expression interpolation fails
- fix: turn invalid matrices into a hard error
Security: Workflow Commands
Workflow commands are a capability to log text while running a workflow and have a side-effect by printing to the console. This capability introduces security risks to an action, as many workflows print user controlled text to the console and can be used to impersonate workflow commands.
The following workflow commands have been removed from Forgejo Runner.
add-path
If workflows still use add-path, a warning will be printed, and the command will have no impact. Workflows that need
to amend PATH of successive steps should write to $FORGEJO_PATH:
Instead of:
- run: |
echo "::add-path:: /add-to-path"
Use:
- run: |
echo "/add-to-path" >> "$FORGEJO_PATH"
Contrary to GitHub Actions, it is not possible to restore it again by setting the environment variable
ACTIONS_ALLOW_UNSECURE_COMMANDS=true.
set-output
Workflows that want to set output variables must no longer use set-output. If workflows still use set-output, a
warning will be printed. Workflows that want to set output variables can do so by writing to $FORGEJO_OUTPUT.
Instead of:
- run: |
echo "::set-output name=MY_VARIABLE::value"
Use:
- run: |
echo "MY_VARIABLE=value" >> "$FORGEJO_OUTPUT"
set-env
If workflows still use set-env, a warning will be printed. Workflows that need to amend the environment can write to
$FORGEJO_ENV.
Instead of:
- run: |
echo "::set-env name=MY_VARIABLE::value"
Use:
- run: |
echo "MY_VARIABLE=value" >> "$FORGEJO_ENV"
Contrary to GitHub Actions, it is not possible to restore it by setting the environment variable
ACTIONS_ALLOW_UNSECURE_COMMANDS=true.
Security: Docker Authentication
When Forgejo is configured with the secrets DOCKER_USERNAME and DOCKER_PASSWORD, Forgejo Runner would attempt to use
them to authenticate to any container registry that required authentication when pulling images. This posed an security
risk as the credentials may be sent to an unexpected container registry.
The functionality can be replaced by specifying credentials explicitly using
jobs.<job_id>.container.credentials.
Docker Minimum Dependency
The minimum requirement for Docker has been raised to Docker 25.0.
Forgejo Runner’s library for interacting with Docker was upgraded in this release. This upgrade triggered a bug in some versions of Docker when using IPv6 networks on their containers (moby 49520, 52991), resulting in an error like 2026/07/01 14:58:59 Could not get list of networks: ParseAddr("fd05:d0ca:2::1/112"): unexpected character, want colon (at "/112"). This issue is fixed in Docker v28.0.1. If you are affected by this issue, you can upgrade Docker, or remain on Forgejo Runner v12 until such an upgrade is available to you.
Runner Configuration
When administrating a Forgejo Runner, the environment variables GITEA_DEBUG, GITEA_TRACE, GITEA_RUNNER_CAPACITY,
GITEA_RUNNER_FILE, GITEA_RUNNER_ENVIRON, and GITEA_RUNNER_ENV_FILE are now ignored and have no effect.
The Runner configuration option container.network_mode has been removed. container.network can be used instead.
Support for the ${{ gitea.[...] }} context was removed from Forgejo Runner. This capability only worked with forgejo-runner exec.