docker / docker/secrets-engine

`GetSecretsRequest` carries no caller context, making project-local plugin backends impossible

Open
#551 2 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
91
Forks
16
Avg merge
9h 3m
Merged PRs (30d)
24

Description

The current GetSecretsRequest proto contains only pattern:

message GetSecretsRequest {
  string pattern = 1;
}

This means a plugin daemon has no way to know who is asking or from where. For secret backends that are inherently project-local (encrypted files checked into a repo, .env files co-located with compose.yaml) this is a dead end. The plugin either serves a single global config or has to resort to global mutable state (a shared config file) that breaks under concurrent projects.

Concrete example: a SOPS plugin that decrypts secrets.sops.env files. The file lives in the project directory. The plugin needs to know the calling project's working directory to find it. There is no way to get this today.

Proposal: add optional caller context to GetSecretsRequest:

message GetSecretsRequest {
  string pattern = 1;
  optional CallerContext context = 2;
}

message CallerContext {
  string working_directory = 1;
  string compose_project   = 2;
  map<string, string> labels = 3;
}

Docker and Compose already know the project directory at secret resolution time. Passing it through costs nothing and unlocks an entire class of local-first secret backends.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the GetSecretsRequest proto and tracing secret resolution through Docker and Compose, where the project directory is already known. Review how plugin requests are propagated, then define and validate the CallerContext contract so project-local backends can receive it without breaking callers.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
api, backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.