fix: bypass actors not being deleted from repository rulesets#2780
Merged
nickfloyd merged 4 commits intointegrations:mainfrom Oct 21, 2025
Merged
Conversation
When bypass_actors are removed from Terraform config, they persist in GitHub despite Terraform showing them as removed. This occurred because go-github's UpdateRuleset() uses the 'omitempty' JSON tag on BypassActors, causing empty arrays to be omitted from the request. GitHub interprets a missing field as 'don't modify'. Changed to always use UpdateRulesetNoBypassActor() which includes the bypass_actors field even when empty, allowing proper deletion. Closes integrations#2179
nickfloyd
approved these changes
Oct 21, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #2179
Before the change?
Although Terraform showed bypass actors as being removed in the plan output, they persisted in GitHub. This occurred because the go-github client's
UpdateRuleset()function uses theomitemptyJSON tag onBypassActors, causing emptyBypassActorsto be omitted from API requests. GitHub interprets the missing field as "don't modify".See comment in go-github's client code for more information.
After the change?
Changed
resourceGithubRepositoryRulesetUpdate()to always useUpdateRulesetNoBypassActor()instead ofUpdateRuleset().UpdateRulesetNoBypassActor()always includes thebypass_actorsfield in the JSON payload, even when empty. When bypass actors are removed from Terraform config, they are now properly deleted from GitHub.Pull request checklist
Does this introduce a breaking change?
Please see our docs on breaking changes to help!