docker/cli ยท error

duplicate secret target for %s not allowed

Error message

duplicate secret target for %s not allowed

What it means

Error "duplicate secret target for %s not allowed" thrown in docker/cli.

Source

Thrown at cli/command/service/parse.go:22

	"context"
	"fmt"

	"github.com/moby/moby/api/types/swarm"
	"github.com/moby/moby/client"
)

// ParseSecrets retrieves the secrets with the requested names and fills
// secret IDs into the secret references.
func ParseSecrets(ctx context.Context, apiClient client.SecretAPIClient, requestedSecrets []*swarm.SecretReference) ([]*swarm.SecretReference, error) {
	if len(requestedSecrets) == 0 {
		return []*swarm.SecretReference{}, nil
	}

	secretRefs := make(map[string]*swarm.SecretReference)

	for _, secret := range requestedSecrets {
		if _, exists := secretRefs[secret.File.Name]; exists {
			return nil, fmt.Errorf("duplicate secret target for %s not allowed", secret.SecretName)
		}
		secretRef := new(swarm.SecretReference)
		*secretRef = *secret
		secretRefs[secret.File.Name] = secretRef
	}

	args := make(client.Filters)
	for _, s := range secretRefs {
		args.Add("name", s.SecretName)
	}

	res, err := apiClient.SecretList(ctx, client.SecretListOptions{
		Filters: args,
	})
	if err != nil {
		return nil, err
	}

View on GitHub (pinned to e9452d6e78)

When it happens

Trigger: Thrown at cli/command/service/parse.go:22 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of docker/cli@e9452d6e78 (2026-08-01). Data as JSON: /data/errors/6cad8d9d68637171.json. Report an issue: GitHub.