Back to docs map: Documentation Index
This guide captures security controls and hardening guidance for gloves.
gloves secrets get supports two non-interactive modes:
--pipe-to <command>: stream raw secret bytes to stdin--pipe-to-args "<command> {secret}": interpolate UTF-8 secret text into args
Guardrails:
- Executable must be a bare command name.
- Executable must be allowlisted by
GLOVES_GET_PIPE_ALLOWLIST. --pipe-toand--pipe-to-argsare mutually exclusive.--pipe-to-argsmust include{secret}and cannot use{secret}as executable.--pipe-to-argsrejects control characters in secret input.
Extra policy options:
GLOVES_GET_PIPE_ARG_POLICY: exact template allowlist.gloves.toml [secrets.pipe.commands.<command>]: URL-prefix policyGLOVES_GET_PIPE_URL_POLICY: env fallback URL-prefix policy
Example config URL policy:
[secrets.pipe.commands.curl]
require_url = true
url_prefixes = ["https://api.example.com/v1/"]Controls:
GLOVES_REQUEST_ALLOWLISTGLOVES_REQUEST_BLOCKLISTgloves request --allowlist ... --blocklist ...
Pattern formats:
*namespace/*- exact secret id (
namespace/name)
gloves run --env NAME=gloves://namespace/secret-path -- <command...> injects explicitly selected secrets as environment variables into one child process.
Safety properties:
- secret values stay out of wrapper JSON/text output
- the wrapped command exit code is preserved
- command execution is audited without logging plaintext values
- secret ACL read policy applies before injection
Use gloves run for the generic top-level UX, similar to op run or doppler run.
gloves exec env --env NAME=gloves://namespace/secret-path -- <command...> is the lower-level explicit env-delivery primitive behind gloves run.
gloves vault exec <name> -- <command...> remains the vault-specific path that mounts, executes, and unmounts.
Current guidance:
- use
runfor the default user-facing flow - use
exec envwhen you need to select env delivery explicitly - prefer explicit refs over broad scope injection
- treat env delivery as the baseline convenience path, not the final security ceiling
Stronger future delivery strategies are planned around file-based and brokered execution paths so high-risk secrets do not need to ride through process environments.
Additional vault safety properties:
- unmount attempted on success and failure paths
- extpass env vars are removed from wrapped command env
- Keep daemon loopback-only (
127.0.0.1). - Use
GLOVES_DAEMON_TOKENfor daemon API request authentication. - For OpenClaw, prefer the packaged Gateway plugin and host-side
gloves-mcpstdio sessions instead of sandbox bind mounts for binaries, sockets, or token files. - Treat
socketPathas a compatibility option for other runtimes, not the default OpenClaw guidance. - Keep config + runtime root permissions private.
- Never persist raw secret values in logs or memory summaries.
Run routinely:
gloves config validate
gloves verify
gloves audit --json --limit 200- Prefer stdin-based flows (
secrets set --stdin,secrets get --pipe-to). - Use least-privilege ACL per agent.
- Use short TTL values for temporary secrets and vault mounts.
- Require explicit
--agentin automation.