Secrets
The organization's session secrets, their bound hosts and who may use them; a value is never read back.
List secrets
The organisation's session secrets, their bound hosts and who may use them; never a value.
A session sends its placeholder (the variable CIRESK_SECRET_<NAME>, ciresk_placeholder_<name>.<nonce>) in the secret's header; the worker's egress proxy attaches the value on a TLS connection to one of the secret's hosts, outside the pod. Values are write-only: no capability returns one. repos, templates and agent_sessions select sessions; they do not authorise: every member who may start a session in the organisation can use a secret through the proxy.
Response
datadata[].agent_sessions- a session whose requester is not a user principal (an agent, a service, a key) gets the secret only when true
data[].header- the request header the value goes in: authorization (Bearer, any scheme, or Basic's user or password) or one custom header name
data[].hosts- exact names the value is attached for, host or host:port (443 when left out); no wildcard, no ip literal
data[].name- not starting with model_ (the model front's placeholders)
data[].purpose- proxy: the session's egress proxy puts the value in header on requests to hosts; git: the worker's push credential for the forge on hosts (a token for https, an openssh private key for ssh), never handed to the proxy, so no placeholder in the pod stands for it. a change of purpose widens the secretOne of
proxy,git data[].repos- * or normalised repositories (github.com/acme/app) whose sessions get the secret; a selector, not a boundary
data[].templates- template names whose sessions get the secret; empty for any
data[].updated_atdata[].updated_bydata[].version
curl "$CIRESK_API/v1/dev/secrets" \
-H "Authorization: Bearer $CIRESK_KEY"Set a secret
Create or replace a session secret; the value is stored through the vault port and never read back.
An org admin with dev:secrets.write. value is required to create, and again whenever hosts or header change or repos, templates or agent_sessions widen (422 value_required); a pure narrowing may leave it out and keeps the stored value. A change reaches a running session within 5 minutes. Audited without the value (dev.secrets.set: the name, the metadata diff, value_changed).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Required | the name a session's placeholder carries: ciresk_placeholder_<name> |
Request body
agent_sessionsheaderhostspurpose- proxy: the session's egress proxy puts the value in header on requests to hosts; git: the worker's push credential for the forge on hosts (a token for https, an openssh private key for ssh), never handed to the proxy, so no placeholder in the pod stands for it. a change of purpose widens the secretOne of
proxy,git repos- * or a repository as dev.templates.promote takes it
templatesvalue- required to create and to widen; absent keeps the stored value on a pure narrowing
Response
agent_sessions- a session whose requester is not a user principal (an agent, a service, a key) gets the secret only when true
header- the request header the value goes in: authorization (Bearer, any scheme, or Basic's user or password) or one custom header name
hosts- exact names the value is attached for, host or host:port (443 when left out); no wildcard, no ip literal
name- not starting with model_ (the model front's placeholders)
purpose- proxy: the session's egress proxy puts the value in header on requests to hosts; git: the worker's push credential for the forge on hosts (a token for https, an openssh private key for ssh), never handed to the proxy, so no placeholder in the pod stands for it. a change of purpose widens the secretOne of
proxy,git repos- * or normalised repositories (github.com/acme/app) whose sessions get the secret; a selector, not a boundary
templates- template names whose sessions get the secret; empty for any
updated_atupdated_byversion
Errors
- 401an error
- 403an error
- 422secret_invalid (a name, host, header, repository or template off its rule, a name starting ciresk_ (reserved, amendment of 2026-10-25), a host a model or tool vendor, a wildcard or an ip literal, a value under 16 or over 8192 bytes or with a control character); value_required (a create, or a change that moves hosts or header or widens repos, templates or agent_sessions, without a value)
- 503secrets_unavailable (the installation has no DEV_SECRETS_VAULT)
curl -X PUT "$CIRESK_API/v1/dev/secrets/target/dist/platform-api.tar.zst" \
-H "Authorization: Bearer $CIRESK_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent_sessions": true,
"header": "acme/platform",
"hosts": [
"registry.npmjs.org"
],
"purpose": "proxy",
"repos": [
"acme/platform"
],
"templates": [
"platform"
],
"value": "acme/platform"
}'Delete a secret
Delete a session secret and its value.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Required | the name a session's placeholder carries: ciresk_placeholder_<name> |
Response
deleted
curl -X DELETE "$CIRESK_API/v1/dev/secrets/target/dist/platform-api.tar.zst" \
-H "Authorization: Bearer $CIRESK_KEY"