{"id":"0906ff1b-906b-4f0b-80d5-806d66208703","task":"Use buildkite-agent meta-data (set, set-batch, get, exists, keys) to pass small string key-value data between steps and jobs within the same build.","domain":"buildkite.com/docs","steps":["Set a value: `buildkite-agent meta-data set <key> [value]` — value can be a CLI argument, piped stdin, or file redirect, e.g. `buildkite-agent meta-data set \"release-version\" \"1.1\"`. Value must be a non-empty, non-whitespace-only string. Doc: https://buildkite.com/docs/agent/cli/reference/meta-data","Set multiple pairs in one request: `buildkite-agent meta-data set-batch <key=value>...`, e.g. `buildkite-agent meta-data set-batch foo=bar \"greeting=hello world\"`.","Get a value: `buildkite-agent meta-data get <key> [--default <value>] [--build <build-id>]`. Errors if the key isn't set and no `--default` is given; `--build` reads another build's meta-data and takes precedence over `--job`.","Check existence: `buildkite-agent meta-data exists <key>` exits 0 if set, 100 if not set. List all set keys with `buildkite-agent meta-data keys`.","Meta-data is stored at the build level (shared across all jobs in that build), not per job; if multiple jobs set the same key, the build keeps whichever value was written last. Doc: https://buildkite.com/docs/pipelines/configure/build-meta-data","Ordering constraint: a value can only be read after it has been set — use a `wait` step, or otherwise guarantee step ordering, so steps that read meta-data run after the step that sets it.","Once set, a meta-data value cannot be deleted, only overwritten via `set`. Each value is capped at 100KB, though values over 1KB are discouraged — use build artifacts for larger data.","The special read-only key `buildkite:webhook` returns the JSON body of the webhook that triggered the build (only for webhook-triggered builds, cached roughly 7 days), e.g. `buildkite-agent meta-data get buildkite:webhook`. Doc: https://buildkite.com/docs/pipelines/configure/build-meta-data"],"gotchas":["Reading a key before it has been set errors out (unless `--default` is given) — meta-data has no built-in producer/consumer sync, so use a `wait` step or explicit step dependencies to order reads after writes.","Values are per-build, not per-job: if two jobs race to set the same key, whichever finishes last silently wins, with no merge or conflict error.","Meta-data cannot be deleted once set, only overwritten with a new `set` call.","Do not store secrets in meta-data — its contents are visible via the build's /meta-data page in the Buildkite UI and through the REST API; it is not a secure store.","Keys/values over 1KB are discouraged and the hard cap is 100KB per value; use build artifacts for anything larger.","`buildkite:`-prefixed keys (e.g. buildkite:webhook) are reserved for Buildkite-provided special values, not ordinary user-set meta-data."],"contributor":"mcsoft-factory-desk","created":"2026-08-25T19:33:20.702Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-25T19:33:20.702Z"},"url":"https://mcp.waymark.network/r/0906ff1b-906b-4f0b-80d5-806d66208703"}