Release notes¶
8.3.2 (2026-06-17)¶
Bug Fixes¶
8.3.1 (2026-06-17)¶
Bug Fixes¶
- stop AlignKeywords/TestCasesSection from aligning comments outside test cases and keywords (#1768) (ff98d1b)
8.3.0 (2026-06-17)¶
Features¶
8.2.11 (2026-06-12)¶
Bug Fixes¶
- add deptry dependency check (#1761) (4990e53)
- References to upstream
clickcausing further side effects (#1754) (#1755) (4007e29)
8.2.10 (2026-06-05)¶
Bug Fixes¶
8.2.9 (2026-05-26)¶
Bug Fixes¶
8.2.8 (2026-05-11)¶
Bug Fixes¶
- Fix documentation typos & add documentation linter (#1738) (2a45e93)
- Fix formatting result incorrectly cached in no overwrite modes (--diff/--no-overwrite) (#1742) (1d7fadc)
8.2.7 (2026-04-14)¶
Bug Fixes¶
- Keyword naming rules with library import with underscores is now detected properly (#1734) (a86b1d4)
8.2.6 (2026-04-13)¶
Bug Fixes¶
- ensure that configuration files are loaded in the order (robocop.toml > robot.toml > pyproject.toml) (#1729) (b7e041f)
- pygments 2.20.0 failing to build our documentaton (#1731) (e6a5945)
8.2.5 (2026-04-07)¶
Bug Fixes¶
8.2.4 (2026-03-27)¶
Bug Fixes¶
8.2.3 (2026-03-17)¶
Bug Fixes¶
- Fix missing force-exclude flag from the configuration file (#1708) (90cea8c)
- Fix unused-variable reported on the FOR loop variable with type (#1706) (260f4f4)
8.2.2 (2026-02-27)¶
Bug Fixes¶
8.2.1 (2026-02-27)¶
Bug Fixes¶
8.2.0 (2026-02-22)¶
Features¶
8.1.1 (2026-02-20)¶
Bug Fixes¶
8.1.0 (2026-02-19)¶
Features¶
Bug Fixes¶
8.0.0 (2026-02-11)¶
More detailed notes regarding 8.0.0 here.
Breaking changes¶
- dropped support for Python 3.9
- dropped support for Robot Framework 4
- Deprecated
deprecated-statementrule - Deprecated
ReplaceReturnsformatter - Deprecated
AddMissingEndformatter - refactored source files handling with common
SourceFileclass - redesigned configuration layer for typing safety and OOP friendliness
Features¶
- Fixable rules (#1617) (128c849)
- deprecate
deprecated-statementrule and split into new rules - new rule DEPR08
deprecated-run-keyword-if - new rule DEPR09
deprecated-loop-keyword - new rule DEPR10
deprecated-return-keyword(with a fix) - new rule DEPR11
deprecated-return-setting(with a fix) - Robocop is now more verbose
- Keyword naming rules and formatters quotation handling
- performance improvements (#1611) (eea1c56)
report()can be now used from the rule class (#1644) (8aff795)- Robocop is now fully typed (#1661) (42045dc)
- list rules can now return the result when used from the Python (#1629) (457d135)
- MCP is now aware of local config (#1673) (55e18b6)
- Skip documentation by default in NormalizeSeparators (#1672) (5b1ae35)
- Added or improved support for variable type conversion (#1654) (#1650) (#1651) (#1652) #1653)
- New rule ANN04
set-keyword-with-type - Add
case_normalizationparameter to enforce case by RenameKeywords (#1667) (49a0b02)
Bug fixes¶
- add explicit typing-extensions dependency (#1680) (b406f25)
- Fix #1174 expression-can-be-simplified raised for == 0 (#1649) (d0f4985)
- Fix #1422 - ReplaceWithVAR formatter replacing variables with item access (#1648) (a9c3377)
- Fix caching the issues with fixes (#1623) (256874b)
- Fix extend-select matching only on rule id, not on rule name (#1669) (403ff7d)
- Fix format --extend-select not enabling formatters (#1668) (3c76c50)
- Fix not all issue format parameters supported by extended output (#1624) (727c38d)
- Fix too-long-variable-name throwing exception on Set X Variable without arguments (#1675) (3a55663)
- multiple paths passed to robocop check/format command resolving to the same config (#1614) (bdcfd48)
- Fix rst-style urls in the documentation (#1640) (eb1dcab)
- Update RenameVariables formatter so it treats numbers as part of word and does not split on it (#1663) (eddfd96)
7.2.0 (2026-01-01)¶
Features¶
- mcp: add new tools and improve UX for large codebases (#1601) (9b1d871)
- mcp: add response caching and error handling middleware (#1599) (406cfbe)
- mcp: enhance MCP server with batch operations, quality metrics, and improved LLM guidance (#1593) (c6a853b)
- Refactor print_issues report to gain 3x perfomance gain on printing (#1605) (6755d96)
Bug Fixes¶
- caching: Fix CLI always overriding cache=true/false in the configuration file (#1608) (b31a5ef)
- release: fix triggering Github workflows from automated scripts (#1594) (72ce0ff)
7.1.0 (2025-12-23)¶
Features¶
- add commented-out-code detection rule (COM06) (#1564) (8afa9d2)
- add file-level caching for linter and formatter to skip unchanged files (#1565) (ceb02cc)
- add MCP server for AI assistant integration (#1583) (c68330a)
- add three separate rules for variable type annotations (RF 7.3+) (#1579) (03ef483)
- automate release process with release-please (#1571) (4bd6d3f)
- VAR02: add ignore parameter for unused-variable rule (#1576) (0c2ebf4)
Bug Fixes¶
- Invalid Robocop disabler accepted as disabler for all rules (#1569) (595ffdb)
- mcp: fix limit handling bugs and add enhancements (#1589) (0926a4d)
Documentation¶
- add annotations rule group to documentation (#1439) (#1588) (50cbfa7)
- Add caching documentation (#1572) (5d941e8)
7.0.0¶
Features¶
-
Breaking change Add option
--extend-selectfor linter and formatter (issue #1546)--extend-selectallows to enable rules and formatters on top of theselectconfiguration. It can be used to retain all default rules or formatters and only add additional ones:robocop check --extend-select no-embedded-keyword-arguments robocop format --extend-select AlignKeywordsSection --extend-select CustomFormatterSince previous
--custom-formattersformatter option already behaved like a--extend-selectoption (which was not documented), it is now deprecated and renamed to--extend-selectinstead.It is also recommended to use
--extend-selectover--configue name.enabled=True. -
Breaking change Split
wrong-case-in-keyword-namerule into two separate rules (issue #1471):wrong-case-in-keyword-namewhich checks case convention in keyword definition namewrong-case-in-keyword-callwhich checks case convention in keyword call nameIt allows configuring different conventions for keyword definition and keyword call names. If you have existing configuration for
wrong-case-in-keyword-name(you are ignoring it or configuring) you need to apply the same config towrong-case-in-keyword-callto retain old behaviour. -
SplitTooLongLinecan now split more settings types: Library imports, Test Tags and Keyword Tags (issue #1454)Example code before and after the change:
-
Restore project checkers (issue #1108)
Project checkers were temporarily removed in the Robocop 6.0. There are now brought back in a new form, as a separate command:
This command behaves similarly to the
checkcommand, but it only runs project rules.The project checks itself were also refactored to be more flexible. See project checker and custom rules project checker for reference.
-
Extend robocop disablers to the whole node (issue #1515
Robocop will now ignore issues in the whole node (keyword, test case, for loop, keyword call, etc.) when the disabler is set in the header / keyword call body. For example:
*** Keywords *** My Keyword FOR ${var} IN 1 2 3 # robocop: off=unused-variable Log 1 END Keyword # robocop: off=bad-indent ... ${var} ... ${var2}Previously, Robocop would ignore
unused-variableonly when reported on theFORheader andbad-indentonly when reported on the same line as disabler comment. After this change, those issues will be ignored in the whole FOR loop and the wholeKeywordcall respectively. -
Ignore unused variables starting with
_(${_variable}) (issue #1457
Fixes¶
- Fix
unused-variableandvariable-overwritten-before-usagerules not reporting violations inTRYblocks (issue #1548) - Fix
wrong-case-in-keyword-callrule false positive report on names with.character with first_word_capitalized = True (issue #1555) - Fix
wrong-case-in-keyword-namerule incorrectly handling names with.character (issue #1555)
Documentation¶
- Added documentation linters (with MegaLinter) and fixed several issues in our documentation.
6.13.0¶
Features¶
- Add
per_file_ignoresoption to ignore rules matching file patterns (issue #1134)
Example configuration:
[tool.robocop.lint.per_file_ignores]
"test.robot" = ["VAR02"]
"ignore_subdir/*" = ["empty-line-after-section", "DOC01"]
"ignore_file_in_subpath/test2.robot" = ["SPC10"]
- Allow manually disabling reports with
enabled=False. It can be used to disable defaultprint_issuesreport (issue #1540) - Add
docs_urlproperty to rule class which points to rule documentation URL (issue #1432)
Fixes¶
- Fix piping output (
robocop check > output.txt) not working on Windows because of code lines converted to emojis (issue #1539) - Fix configuration file loaded from the root directory with
--ignore-file-configoption enabled (other configuration files were correctly ignored)
Documentation¶
- Describe how to extend the Robocop Rule class using
docs_urlas an example (here).
6.12.0¶
Features¶
- Add
extendsconfiguration parameter which allows inheriting configuration from another file (issue #1453) - Change
mixed-tabs-and-spaces(SPC06) rule behaviour to report all occurrences of mixed tabs and spaces in a file (issue #848) format_files(robocop API entrypoint for formatting files) now acceptsreturn_resultparameter for returning exit code instead of raising SystemExitRenameVariablesnot longer replaces spaces in variable names with the math operators (issue #1428)
Fixes¶
- Fix
AlignKeywordsSectionandAlignTestCasesSectionnot aligning VAR variables (issue #1493) - Fix optional
no-embedded-keyword-argumentsrule fatal exception when reading a file with invalid syntax - Fix the empty configuration file causing Robocop to fail (issue #1536)
Documentation¶
- Add
deprecated namessection to all the rules that list previous names and ids of the rule
6.11.0¶
Features¶
- Add
--silentoption to disable all output when running Robocop (issue #1512) - Improve startup performance of the Robocop (using a Robocop repository as a benchmark: from 5s to 0.3s). It was done by fixing issues in handling ignored files and by properly caching configuration files (to avoid multiple lookups). The difference may be noticeable only for the large, complex projects (issue #1503)
Fixes¶
- Fix directories from the
.gitignorefile not ignored (issue #1503) - Fix
migratecommand migrating formatters withenabled=Falsefrom the old transform to select option (issue #1492) - Fix
migratecommand not splitting multiline configurations (issue #1491) - Fix multiline inline IF splitting. To avoid issues when formatting such code, all inline IFs are now flattened to a single line (issue #1506):
becomes:
- Fixenabled formatter parameter not validating as a boolean (issue #1476)
Documentation¶
- Mark disabled rules in the documentation (previously they were not distinguishable from the enabled rules) (issue #1518)
- Add two new sections to the documentation:
- Python API Reference
- AI integration
6.10.1¶
Fixes¶
- Fix
verbose,force_excludeandskip_gitignoreoptions not supported in the configuration file
Documentation¶
- Fix incorrect code examples in the documentation.
6.10.0¶
Documentation¶
Release a new documentation website.
Rewrite of our documentation from Sphinx to MkDocs, now hosted at https://robocop.dev.
6.9.2¶
Fixes¶
- Fix invalid Robot Framework dependency version range
6.9.1¶
Fixes¶
-
Fix invalid rule positions stopping Sonar Qube import (issue #1417) End-to-end testing of Sonar Qube issue imports revealed multiple problems with diagnostic positioning. All problematic rules included an incorrect offset of 1. The following rules have been corrected:
-
invalid-setting-in-resource(ERR16) unreachable-code(MISC10)keyword-name-is-reserved-word(NAME03)invalid-section(NAME16)
6.9.0¶
Documentation¶
Rule documentation now contains information about deprecated names. It is especially helpful during migration to Robocop 6.0 or comparing results between old and new Robocop reports.
6.8.3¶
Fixes¶
- Fix Robocop failing to scan directory with dangling symlink (issue #1494)
Robocop should be able to scan a directory with dangling (pointing to a non-existing path) symlink.
6.8.2¶
Fixes¶
- Fix comment handling in Set Variable If with ReplaceWithVAR formatter (issue #1495)
ReplaceWithVAR no longer abruptly stops when converting Set Variable If with comments to VAR.
6.8.1¶
Fixes¶
- Fix Python 3.14 compatibility issues, where Robocop disabled 1/3 of the rules.
6.8.0¶
Features¶
- Add a new rule: unused disabler rule (issue #1312)
A new rule unused-disabler (MISC15) has been added to detect Robocop disabler directives (such as # noqa or
# robocop: off) that are not being used. This typically occurs when:
- A code violation is fixed, but the disabler is not removed
- A rule is disabled globally, making local disablers redundant
-
Multiple overlapping disablers are present
-
Improved comment handling in SplitTooLongLine formatter (issue #1444)
The SplitTooLongLine formatter now has better comment handling.
Previous behavior:
When formatting keyword call or VAR by SplitTooLongLine formatter, comments were moved above the statement,
for example:
Was formatted to:
This caused unindented effect where robocop disabler directives (e.g. # robocop: off) were also moved above the
statement and no longer applied correctly.
New behavior:
Comments are now kept on the first line of the split statement:
This ensures that disablers and other comments remain associated with the correct statement.
- Disablers are discoverable anywhere in comments
Disabler directives can now be placed anywhere within a comment, not just at the beginning.
Previous behavior:
Only the first disabler at the start of a comment was recognised:
# only robocop: off=some-rule is recognized
Keyword Call # robocop: off=some-rule robocop: fmt: off
# only noqa is recognized
Keyword Call # noqa robocop fmt: off
# nothing is recognized
Keyword Call # TODO: robocop: off
New behavior:
All disablers are now recognised regardless of their position in the comment. Additionally, the syntax is more flexible and rules can be separated by commas with or without spaces:
Fixes¶
- Fix overwrite mode not working from the configuration file (issue #1478)
Fixed an issue where the overwrite mode was not being applied when specified in the configuration file. The
following configuration now works correctly:
- Fix rules url pointing to a non-existing location (issue #1481)
Rules urls (such as SARIF helpUri, or diagnostic message urls) were pointing to non-existent locations after a documentation refactor. URLs now correctly point to:
https://robocop.readthedocs.io/en/v{version}/rules/rules_list.html#{rule-name} .
- Fix line too long rule reporting lines with new disablers
New disabler directives (robocop: fmt: off and fmt: off) were not ignored by line-too-long rule.
From now on, together with other disablers, comments with disablers will be ignored when checking line length.