Skip to content

fix(policy)!: GetPC does not respect manager field. - #3752

Merged
c-r33d merged 9 commits into
mainfrom
get-pc-bug
Jul 22, 2026
Merged

fix(policy)!: GetPC does not respect manager field.#3752
c-r33d merged 9 commits into
mainfrom
get-pc-bug

Conversation

@c-r33d

@c-r33d c-r33d commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Caution

THIS IS A BREAKING CHANGE

1.) Add the new manager_name selector and deprecate the name only selector.
2.) Change otdfctl to match the api changes.

Summary by CodeRabbit

  • New Features
    • Provider configurations can now be retrieved using a name + key manager implementation pair.
    • Added --manager (-m) support to the provider retrieval command.
  • Bug Fixes
    • Improved handling of incomplete/invalid lookup options, including clearer validation and error mapping for deprecated identifier usage.
    • Provider configurations with the same name can now be correctly distinguished by manager.
  • Documentation
    • Updated the otdfctl man page with --manager details and examples.
  • Tests
    • Expanded end-to-end and integration coverage for name+manager retrieval and failure scenarios.

@c-r33d
c-r33d requested review from a team as code owners July 16, 2026 15:30
@github-actions github-actions Bot added comp:db DB component comp:policy Policy Configuration ( attributes, subject mappings, resource mappings, kas registry) size/s labels Jul 16, 2026
@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Provider configuration retrieval now supports name-and-manager identifiers. Typed service and database requests, manager-aware CLI flags, deprecated name-only error mapping, dependency updates, and integration/end-to-end coverage were added.

Changes

Provider configuration lookup

Layer / File(s) Summary
Typed lookup contract and backend flow
service/policy/db/key_management.go, service/policy/keymanagement/key_management.go, service/pkg/db/errors.go, service/go.mod
Typed requests support ID or name-and-manager lookup; name-only lookup is deprecated and mapped to an invalid-argument error.
CLI manager flag and documentation
otdfctl/cmd/policy/keyManagementProvider.go, otdfctl/pkg/handlers/provider-config.go, otdfctl/docs/man/policy/key-management/provider/get.md
Provider retrieval accepts and forwards manager, requires it with name, updates delete lookups, and documents the new usage.
Integration and validation coverage
service/integration/keymanagement_test.go, service/policy/keymanagement/key_management_test.go
Tests cover typed identifiers, manager-specific results, validation, uniqueness, persistence, updates, and deprecated lookups.
CLI end-to-end coverage
otdfctl/e2e/provider-config.bats
Provider configuration scenarios use explicit managers and validate retrieval, failures, list, update, delete, returned fields, and cleanup.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CLI
  participant ProviderHandler
  participant KeyManagementService
  participant PolicyDBClient
  CLI->>ProviderHandler: provide id, name, manager
  ProviderHandler->>KeyManagementService: send GetProviderConfigRequest
  KeyManagementService->>PolicyDBClient: pass typed identifier
  PolicyDBClient-->>KeyManagementService: return provider config or error
  KeyManagementService-->>CLI: return response
Loading

Possibly related PRs

  • opentdf/platform#3731: Uses GetProviderConfig for provider-config existence checks in an update flow.
  • opentdf/platform#3753: Introduces the related name-and-manager identifier shape used by these lookup changes.

Suggested labels: docs

Suggested reviewers: alkalescent

Poem

A rabbit paired a name and key,
And hopped through typed requests.
Old lone names turned to errors neat,
While tests checked all the quests.
The manager now guides the way.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the main change: fixing GetPC/provider config lookup to use the manager field.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch get-pc-bug

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Checkov (3.3.8)
service/go.mod

Traceback (most recent call last):
File "/usr/local/bin/checkov", line 2, in
from checkov.main import Checkov
ModuleNotFoundError: No module named 'checkov'


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request addresses a bug where the manager field was ignored during provider configuration lookups by name. The changes involve updating the internal API signature to include the manager parameter, enforcing its usage in the CLI, and updating relevant integration tests and documentation to ensure consistency and correctness in provider configuration retrieval.

Highlights

  • API and CLI Update: Updated the GetProviderConfig method to accept a manager field, ensuring it is respected when searching by name.
  • Command Line Interface: Added the --manager flag to the otdfctl keymanagement provider get command and enforced it as a required flag when searching by name.
  • Testing and Documentation: Updated E2E tests and documentation to reflect the new requirement for the manager field when retrieving provider configurations by name.
New Features

🧠 You can now enable Memory (public preview) to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.


The manager field was lost in the fray, / But now it is found in the light of day. / With name and with manager, clearly defined, / The provider config is easy to find.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 141.782844ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 77.782166ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 314.495822ms
Throughput 317.97 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 34.992118255s
Average Latency 348.582905ms
Throughput 142.89 requests/second

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the key provider configuration retrieval process to support and require a manager parameter when fetching by name. This change is implemented across the CLI commands, documentation, E2E tests, handlers, and database queries. The reviewer raised a valid concern that while the CLI enforces the manager parameter when retrieving by name, the API level does not validate this, which could lead to non-deterministic behavior if multiple configurations share the same name but have different managers.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread service/policy/keymanagement/key_management.go
@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 205.167557ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 104.756634ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 420.043038ms
Throughput 238.07 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 44.724370206s
Average Latency 444.481427ms
Throughput 111.80 requests/second

Comment thread service/policy/keymanagement/key_management.proto Outdated
jakedoublev
jakedoublev previously approved these changes Jul 16, 2026
@c-r33d c-r33d changed the title fix(policy): GetPC does not respect manager field. fix(policy)!: GetPC does not respect manager field. Jul 20, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@otdfctl/e2e/provider-config.bats`:
- Around line 112-116: In the test “fail to get provider configuration with id,
name,” rename the misspelled assert_ouput command to assert_output and add the
--partial option so the expected validation message matches output containing
CLI prefixes or trailing newlines.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8b461899-433c-4c72-a549-fa6f5beb0718

📥 Commits

Reviewing files that changed from the base of the PR and between 3fb659d and c95d7d2.

📒 Files selected for processing (7)
  • otdfctl/e2e/provider-config.bats
  • otdfctl/pkg/handlers/provider-config.go
  • service/integration/keymanagement_test.go
  • service/pkg/db/errors.go
  • service/policy/db/key_management.go
  • service/policy/keymanagement/key_management.go
  • service/policy/keymanagement/key_management_test.go

Comment thread otdfctl/e2e/provider-config.bats
@c-r33d
c-r33d requested a review from a team as a code owner July 21, 2026 21:27
@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 167.586396ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 91.967209ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 405.546586ms
Throughput 246.58 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 49.130304451s
Average Latency 489.046393ms
Throughput 101.77 requests/second

@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 231.95912ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 120.036394ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 438.403993ms
Throughput 228.10 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 53.519225298s
Average Latency 533.08199ms
Throughput 93.42 requests/second

@c-r33d
c-r33d requested a review from jakedoublev July 21, 2026 22:10
alkalescent
alkalescent previously approved these changes Jul 22, 2026
@c-r33d
c-r33d enabled auto-merge July 22, 2026 16:01
jakedoublev
jakedoublev previously approved these changes Jul 22, 2026
@c-r33d
c-r33d added this pull request to the merge queue Jul 22, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Jul 22, 2026
@c-r33d
c-r33d dismissed stale reviews from jakedoublev and alkalescent via 91a2acc July 22, 2026 17:49
@c-r33d
c-r33d enabled auto-merge July 22, 2026 17:52

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
service/integration/keymanagement_test.go (1)

609-620: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Exercise distinct providers when testing manager uniqueness.

Test_CreateProviderConfig_SameNameDifferentManager_Succeeds currently creates two different provider names with the same manager, then asserts pc1.GetName() != pc2.GetName(). Use the same provider name but a distinct manager for pc2 so this actually covers the composite (provider_name, manager) uniqueness constraint instead of just provider-name uniqueness.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@service/integration/keymanagement_test.go` around lines 609 - 620, The test
setup in Test_CreateProviderConfig_SameNameDifferentManager_Succeeds should
reuse the same provider name for pc2 and pass a distinct valid manager instead
of basicManager. Update the related assertions to verify equal provider names
and different managers, preserving the test’s successful creation behavior for
the composite uniqueness constraint.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@service/integration/keymanagement_test.go`:
- Around line 609-620: The test setup in
Test_CreateProviderConfig_SameNameDifferentManager_Succeeds should reuse the
same provider name for pc2 and pass a distinct valid manager instead of
basicManager. Update the related assertions to verify equal provider names and
different managers, preserving the test’s successful creation behavior for the
composite uniqueness constraint.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: d681e7b7-c529-438a-b463-745e70326118

📥 Commits

Reviewing files that changed from the base of the PR and between c95d7d2 and 91a2acc.

⛔ Files ignored due to path filters (1)
  • service/go.sum is excluded by !**/*.sum
📒 Files selected for processing (7)
  • otdfctl/e2e/provider-config.bats
  • otdfctl/pkg/handlers/provider-config.go
  • service/go.mod
  • service/integration/keymanagement_test.go
  • service/pkg/db/errors.go
  • service/policy/db/key_management.go
  • service/policy/keymanagement/key_management_test.go

@github-actions

Copy link
Copy Markdown
Contributor
Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 296.943779ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 169.803225ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 438.296371ms
Throughput 228.16 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 48.055584817s
Average Latency 479.02746ms
Throughput 104.05 requests/second

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Govulncheck found vulnerabilities ⚠️

The following modules have known vulnerabilities:

  • examples
  • otdfctl
  • sdk
  • service
  • lib/fixtures
  • tests-bdd

See the workflow run for details.

@c-r33d
c-r33d requested a review from jakedoublev July 22, 2026 17:57
@c-r33d
c-r33d added this pull request to the merge queue Jul 22, 2026
Merged via the queue into main with commit 0d3c0a0 Jul 22, 2026
46 checks passed
@c-r33d
c-r33d deleted the get-pc-bug branch July 22, 2026 18:21
khvirtru pushed a commit to khvirtru/platform that referenced this pull request Jul 24, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.21.0](opentdf/platform@service/v0.20.0...service/v0.21.0)
(2026-07-22)


### ⚠ BREAKING CHANGES

* **policy:** GetPC does not respect manager field.
([opentdf#3752](opentdf#3752))

### Features

* **core:** Update fixtures
([opentdf#3766](opentdf#3766))
([9ac1640](opentdf@9ac1640))
* **policy:** add entitleable namespace field and narrow-read-API doc
corrections ([opentdf#3727](opentdf#3727))
([0fc2f01](opentdf@0fc2f01))
* **policy:** Add name and manager lookup
([opentdf#3753](opentdf#3753))
([bfbc65d](opentdf@bfbc65d))
* **policy:** Add UnsafeUpdateKey implementation
([opentdf#3731](opentdf#3731))
([cd47518](opentdf@cd47518))
* **policy:** Add UnsafeUpdateKey rpc.
([opentdf#3728](opentdf#3728))
([c89b193](opentdf@c89b193))
* **policy:** create subject mappings with attribute values
([opentdf#3741](opentdf#3741))
([718320b](opentdf@718320b))
* **policy:** deprecate GetAttributeValuesByFqns in favor of narrow read
APIs ([opentdf#3745](opentdf#3745))
([baba709](opentdf@baba709))
* **policy:** dynamic attribute value entitlement mappings
([opentdf#3568](opentdf#3568))
([21e95e0](opentdf@21e95e0))
* **policy:** populate entitleable definition namespace
([opentdf#3737](opentdf#3737))
([3f32839](opentdf@3f32839))


### Bug Fixes

* **authz:** use standard Keycloak token exchange
([opentdf#3754](opentdf#3754))
([de9ae0d](opentdf@de9ae0d))
* **core:** Pass the platform logger to the authz role provider factory
([opentdf#3732](opentdf#3732))
([9c32554](opentdf@9c32554))
* **core:** prevent OpenTelemetry resource schema conflicts
([opentdf#3769](opentdf#3769))
([4a0c41c](opentdf@4a0c41c))
* **deps:** bump github.com/opentdf/platform/protocol/go from 0.38.0 to
0.39.0 in /service
([opentdf#3764](opentdf#3764))
([8d430f5](opentdf@8d430f5))
* **ers:** coerce attempted_strategies []string to []interface{} for
structpb ([opentdf#3645](opentdf#3645))
([71d6e90](opentdf@71d6e90))
* **policy:** GetPC does not respect manager field.
([opentdf#3752](opentdf#3752))
([0d3c0a0](opentdf@0d3c0a0))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: opentdf-automation[bot] <149537512+opentdf-automation[bot]@users.noreply.github.com>
khvirtru pushed a commit to khvirtru/platform that referenced this pull request Aug 5, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.36.0](opentdf/platform@otdfctl/v0.35.0...otdfctl/v0.36.0)
(2026-08-04)


### ⚠ BREAKING CHANGES

* **policy:** GetPC does not respect manager field.
([opentdf#3752](opentdf#3752))

### Features

* **authz:** dynamic value mapping and direct entitlement e2e coverage
([opentdf#3774](opentdf#3774))
([49c80a0](opentdf@49c80a0))
* **cli:** add an sdkfactory for optional override in otdfctl for
extension ([opentdf#3793](opentdf#3793))
([c2f2afe](opentdf@c2f2afe))
* **cli:** add dynamic value mapping CRUD commands and e2e tests
([opentdf#3768](opentdf#3768))
([aecd265](opentdf@aecd265))
* **cli:** expose handler hook for injecting SDK options
([opentdf#3755](opentdf#3755))
([76305b0](opentdf@76305b0))
* **cli:** Unsafe update key cli
([opentdf#3733](opentdf#3733))
([65d888e](opentdf@65d888e))


### Bug Fixes

* **deps:** bump github.com/opentdf/platform/protocol/go from 0.36.0 to
0.39.0 in /otdfctl
([opentdf#3765](opentdf#3765))
([a3346f8](opentdf@a3346f8))
* **deps:** bump github.com/opentdf/platform/sdk from 0.25.0 to 0.27.0
in /otdfctl ([opentdf#3773](opentdf#3773))
([490c990](opentdf@490c990))
* **policy:** GetPC does not respect manager field.
([opentdf#3752](opentdf#3752))
([0d3c0a0](opentdf@0d3c0a0))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: opentdf-automation[bot] <149537512+opentdf-automation[bot]@users.noreply.github.com>
Co-authored-by: Elizabeth Healy <35498075+elizabethhealy@users.noreply.github.com>
khvirtru pushed a commit to khvirtru/platform that referenced this pull request Aug 5, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.36.0](opentdf/platform@otdfctl/v0.35.0...otdfctl/v0.36.0)
(2026-08-04)


### ⚠ BREAKING CHANGES

* **policy:** GetPC does not respect manager field.
([opentdf#3752](opentdf#3752))

### Features

* **authz:** dynamic value mapping and direct entitlement e2e coverage
([opentdf#3774](opentdf#3774))
([49c80a0](opentdf@49c80a0))
* **cli:** add an sdkfactory for optional override in otdfctl for
extension ([opentdf#3793](opentdf#3793))
([c2f2afe](opentdf@c2f2afe))
* **cli:** add dynamic value mapping CRUD commands and e2e tests
([opentdf#3768](opentdf#3768))
([aecd265](opentdf@aecd265))
* **cli:** expose handler hook for injecting SDK options
([opentdf#3755](opentdf#3755))
([76305b0](opentdf@76305b0))
* **cli:** Unsafe update key cli
([opentdf#3733](opentdf#3733))
([65d888e](opentdf@65d888e))


### Bug Fixes

* **deps:** bump github.com/opentdf/platform/protocol/go from 0.36.0 to
0.39.0 in /otdfctl
([opentdf#3765](opentdf#3765))
([a3346f8](opentdf@a3346f8))
* **deps:** bump github.com/opentdf/platform/sdk from 0.25.0 to 0.27.0
in /otdfctl ([opentdf#3773](opentdf#3773))
([490c990](opentdf@490c990))
* **policy:** GetPC does not respect manager field.
([opentdf#3752](opentdf#3752))
([0d3c0a0](opentdf@0d3c0a0))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: opentdf-automation[bot] <149537512+opentdf-automation[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp:db DB component comp:policy Policy Configuration ( attributes, subject mappings, resource mappings, kas registry) size/s

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants