Our contributions to Keycloak
Keymate engineers contribute fixes and features to Keycloak itself, because Keymate depends on the same project you run. Since December 2025, 5 Keymate engineers have had 22 pull requests merged into the Keycloak repository and have opened 28 issues there. Every one is listed below with its link to GitHub, so you can read the change and the review yourself.
The figures
| Figure | Count |
|---|---|
| Pull requests merged into keycloak/keycloak | 22 |
| Pull requests open for review | 6 |
| Issues opened in keycloak/keycloak | 28 |
| Keymate engineers with a merged pull request or an issue | 5 |
| Counted from the repository on | 23 October 2026 |
The counts come from the public Keycloak repository on GitHub at every build. How the figures are kept current explains each one.
Merged pull requests
Below is every pull request from a Keymate engineer that Keycloak's maintainers reviewed and merged, newest first. Each entry shows:
- its title and number, linked to GitHub
- the date it was merged
- the Keycloak area it touches and the release it shipped in, from the
area/andrelease/labels of the issue it closes, where there is one
- Validate workflow schedule and restart position values #53855
Merged 14 October 2026 · workflows · Keycloak 27.0.0
- Reject workflow expressions with unrecognized characters #53794
Merged 9 October 2026 · workflows · Keycloak 27.0.0
- Refer to YAML in the create workflow page subtitle #53783
Merged 9 October 2026 · Keycloak 27.0.0
- Create the changelog table in the manual migration export for an empty database #51730
Merged 23 September 2026 · Keycloak 26.8.0
- Add per-application session termination to Account Console #47922
Merged 3 September 2026 · account/ui · Keycloak 26.8.0
- Validate scopes are associated with resources in scope permissions #50181
Merged 11 August 2026 · authorization-services · Keycloak 26.8.0
- Make Roles optional on client Authorization Evaluate tab #49059
Merged 3 August 2026 · Keycloak 26.8.0
- Batch composite-role expansion to avoid an N+1 of getChildRoles on the cache-miss path #50370
Merged 30 June 2026 · core · Keycloak 26.7.0
- Return consistent error when deleting Keycloak-managed clients #49675
Merged 29 June 2026 · admin/api, admin/fine-grained-permissions · Keycloak 26.7.0
- Paginate UserSelect autocomplete and surface exact username match #50185
Merged 22 June 2026 · admin/ui, authorization-services · Keycloak 26.7.0
- Filter options in typeahead search selects #50093
Merged 18 June 2026 · admin/ui · Keycloak 26.7.0
- Export custom provider changesets in manual migration-strategy #49061
Merged 5 June 2026 · dist/quarkus · Keycloak 26.7.0
- Add bottom padding on Authorization Evaluate results page #49064
Merged 20 May 2026 · admin/ui, authorization-services · Keycloak 26.7.0
- Sync client scope state between tabs in dedicated scopes #46109
Merged 14 April 2026 · admin/ui · Keycloak 26.7.0
- Add account-console to defaultClients to prevent deletion of built-in… #47924
Merged 13 April 2026 · admin/api · Keycloak 26.7.0
- Fix multiselect options not highlighted as selected in user profile #47931
Merged 10 April 2026 · admin/ui · Keycloak 26.6.1, 26.7.0 · backport #47956
- Improve error message when organization name cannot be used as alias #45719
Merged 20 March 2026 · Keycloak 26.6.0
- Fix resource selection display in scope-based permission creation #46387
Merged 10 March 2026 · admin/ui · Keycloak 26.6.0
- Fix SearchDropdown clear button and URI search in Authorization tabs #45407
Merged 28 January 2026 · admin/ui, authorization-services · Keycloak 26.6.0
- fix: correct permission type redirect in resource details #45429
Merged 21 January 2026 · admin/ui, authorization-services · Keycloak 26.6.0
- fix: clear all filters when resetting attribute search #45109
Merged 5 January 2026 · admin/ui · Keycloak 26.4.8, 26.5.0
- Add missing repeatHelp translation key #45086
Merged 27 December 2025 · admin/ui · Keycloak 26.5.0
Issues we opened
Below is every bug report and proposal a Keymate engineer has opened in Keycloak's public issue tracker. Each entry shows the issue title and number, linked to GitHub, and whether it is open or closed. Where a pull request closed it, that is shown too.
- Add logout-user workflow step #54231
Open
- Invalid workflow schedule and restart position values are not validated #53849
Closed · closed by #53855
- Workflow expressions silently drop unsupported characters such as `!`, inverting conditions #53790
Closed · closed by #53794
- Create workflow page refers to JSON but the editor uses YAML #53782
Closed · closed by #53783
- Manual migration export for an empty database does not create the DATABASECHANGELOGLOCK table #53088
Open
- Explicit migration-strategy manual or validate is silently ignored when the database is empty #51932
Open
- Invalid redirect on https://access.redhat.com/products/single-sign/ #51732
Closed · closed by #51762
- Manual migration export for an empty database no longer creates the changelog table #51729
Closed · closed by #51730
- Composite-role expansion does an N+1 of `getChildRoles` queries (each with an auto-flush) that dominates Keycloak CPU on the cache-miss path #50369
Closed · closed by #50370
- Scope-based permission accepts a scope not associated with the selected resource (Admin REST API) #50178
Closed · closed by #50181
- Events search type filters don't filter while typing #50092
Closed · closed by #50093
- Deleting admin-permissions client via v1 Admin API returns unknown_error instead of descriptive validation error #49674
Closed · closed by #49675
- Authorization Evaluate results page hides the last resource behind the action bar #49063
Closed · closed by #49064
- Migration-strategy=manual bypasses DBA workflow for custom providers (re-opening #36525) #49057
Closed · closed by #49061
- Make the Roles field optional on the client Authorization Evaluate tab #49056
Closed · closed by #49059
- Expose role enrichment helper for cross-client authorization evaluation #49048
Open
- User profile multiselect options not highlighted as selected in dropdown #47929
Closed · closed by #47931
- account-console client can be deleted despite being a built-in internal client #47923
Closed · closed by #47924
- Account Console: Add per-application session termination on the Applications page #47921
Closed · closed by #47922
- Resource selection not displayed in scope-based permission creation when resource is not in initial results #46384
Closed
- Deleting a resource on page 2 shows "No resources found" empty state while resources still exist in Authorization Resources tab #46089
Closed · closed by #47373
- Newly created resource appears on both current and next page in Authorization Resources tab #46088
Closed · closed by #47446
- "Full scope allowed" toggle reverts to previous state when switching between Scope and Mappers tabs in Dedicated scopes #46083
Closed · closed by #46109
- Improve error message when organization name cannot be used as alias #45718
Closed · closed by #45719
- Admin UI: Wrong redirect for permissions accessed via resource details #45428
Closed · closed by #45429
- SearchDropdown clear button doesn't reset form fields, URI search broken #45406
Closed · closed by #45407
- Admin UI: User attribute filter reset does not refresh user list #45108
Closed · closed by #45109
- Missing repeatHelp translation key in Time policy #45085
Closed · closed by #45086
Pull requests under review
Pull requests still under review by Keycloak's maintainers are listed separately and are not counted as merged. A pull request closed without merging is not listed.
- Add logout-user workflow step #54235
Opened 21 October 2026
- Create the lock table in the manual migration export for an empty database #53096
Opened 23 September 2026
- Honor an explicit migration strategy on an empty database #51933
Opened 21 August 2026
- Combine search query param with other filters in users endpoint #50003
Opened 15 June 2026
- Expose role enrichment helper for cross-client authorization evaluation #49049
Opened 17 May 2026
- Handle orphan authenticator providers in flows #48372
Opened 22 April 2026
One example: composite roles on a cache miss
In issue #50369, a Keymate engineer reported a problem with composite roles. When the roles were not in Keycloak's cache, expanding them sent one database query per role in the tree. Under concurrent token and permission requests, this took most of Keycloak's CPU. The issue records measurements from a prototype fix across three workloads: database queries per second fell by 79 to 89 percent, and CPU use by 54 to 64 percent. Pull request #50370 replaced the per-role lookups with one batched query per level of the role tree. A Keycloak maintainer added caching on top of it and merged it on 30 June 2026. It shipped in Keycloak 26.7.0. Teams that move to Keymate still run this part of Keycloak.
How the figures are kept current
No count or list on this page is typed by hand. At every build, the site asks GitHub's public interface for every pull request and issue in keycloak/keycloak opened by Keymate engineers' GitHub accounts. It also checks the commit history for commits authored with a keymate.io email address. That way, a commit from an account missing from our list still shows up for review.
The counting rules:
- Merged pull requests: pull requests merged into keycloak/keycloak by Keycloak's maintainers. A backport to an older release branch is listed under the original change and counted once.
- Issues opened: issues a Keymate engineer opened, whether now open or closed.
- Contributors: Keymate engineers with at least one merged pull request or one issue in the repository.
- Not counted: reviews of other people's pull requests, comments, and pull requests closed without merging.
If GitHub cannot be reached during a build, the page keeps the previous figures and shows the date they were counted.
Further reading
- Keycloak Authorization Services: how Keycloak's own authorization engine uses resources, scopes, policies and permissions to decide permit or deny, with links into the Keycloak source.
Questions
Does Keymate contribute to Keycloak?
Yes. Since December 2025, 5 Keymate engineers have had 22 pull requests merged into the Keycloak repository and have opened 28 issues there. Each one is listed on this page with its link to GitHub, and the figures are counted from the repository every time the site is built.
Is Keymate open source?
No. Keymate has a free edition under its own license, with every module for up to 100 registered users. Keymate is built on Keycloak, which is open source under the Apache License 2.0, and Keymate's engineers contribute changes to it upstream. Keymate vs Keycloak shows what Keymate adds.
How are Keymate's Keycloak contribution figures counted?
At every build of the site, from GitHub's public record of the keycloak/keycloak repository: pull requests merged by Keycloak's maintainers, issues opened by Keymate engineers, and the engineers behind them. Reviews and unmerged pull requests are not counted. A change copied to an older release branch (a backport) is counted once.