switchroom 0.13.2 → 0.13.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/agent-scheduler/index.js +2 -2
  2. package/dist/auth-broker/index.js +2 -2
  3. package/dist/cli/switchroom.js +132 -214
  4. package/dist/host-control/main.js +2 -2
  5. package/dist/vault/approvals/kernel-server.js +2 -2
  6. package/dist/vault/broker/server.js +2 -2
  7. package/package.json +1 -1
  8. package/profiles/_base/start.sh.hbs +8 -8
  9. package/profiles/default/CLAUDE.md.hbs +1 -1
  10. package/telegram-plugin/dist/gateway/gateway.js +42 -10
  11. package/telegram-plugin/gateway/boot-probes.ts +13 -6
  12. package/telegram-plugin/gateway/gateway.ts +44 -6
  13. package/telegram-plugin/hooks/silent-end-interrupt-stop.mjs +5 -1
  14. package/telegram-plugin/silent-end.ts +56 -0
  15. package/telegram-plugin/tests/boot-probes.test.ts +26 -2
  16. package/telegram-plugin/tests/silent-end.test.ts +69 -0
  17. package/telegram-plugin/uat/scenarios/bridge-flap-resilience-dm.test.ts +166 -0
  18. package/skills/buildkite-agent-infrastructure/SKILL.md +0 -321
  19. package/skills/buildkite-agent-infrastructure/agents/openai.yaml +0 -6
  20. package/skills/buildkite-agent-infrastructure/assets/buildkite-icon-large.png +0 -0
  21. package/skills/buildkite-agent-infrastructure/assets/buildkite-icon-small.png +0 -0
  22. package/skills/buildkite-agent-infrastructure/references/audit-logging.md +0 -87
  23. package/skills/buildkite-agent-infrastructure/references/graphql-mutations.md +0 -690
  24. package/skills/buildkite-agent-infrastructure/references/instance-shapes.md +0 -38
  25. package/skills/buildkite-agent-infrastructure/references/pipeline-templates.md +0 -73
  26. package/skills/buildkite-agent-infrastructure/references/self-hosted-agents.md +0 -137
  27. package/skills/buildkite-agent-infrastructure/references/sso-saml.md +0 -92
  28. package/skills/buildkite-agent-runtime/SKILL.md +0 -509
  29. package/skills/buildkite-agent-runtime/agents/openai.yaml +0 -6
  30. package/skills/buildkite-agent-runtime/assets/buildkite-icon-large.png +0 -0
  31. package/skills/buildkite-agent-runtime/assets/buildkite-icon-small.png +0 -0
  32. package/skills/buildkite-agent-runtime/references/flag-reference.md +0 -417
  33. package/skills/buildkite-agent-runtime/references/patterns-and-recipes.md +0 -555
  34. package/skills/buildkite-api/SKILL.md +0 -308
  35. package/skills/buildkite-api/agents/openai.yaml +0 -6
  36. package/skills/buildkite-api/assets/buildkite-icon-large.png +0 -0
  37. package/skills/buildkite-api/assets/buildkite-icon-small.png +0 -0
  38. package/skills/buildkite-api/references/graphql-reference.md +0 -195
  39. package/skills/buildkite-api/references/patterns.md +0 -44
  40. package/skills/buildkite-api/references/webhooks.md +0 -161
  41. package/skills/buildkite-cli/SKILL.md +0 -397
  42. package/skills/buildkite-cli/agents/openai.yaml +0 -6
  43. package/skills/buildkite-cli/assets/buildkite-icon-large.png +0 -0
  44. package/skills/buildkite-cli/assets/buildkite-icon-small.png +0 -0
  45. package/skills/buildkite-cli/references/command-reference.md +0 -181
  46. package/skills/buildkite-migration/SKILL.md +0 -195
  47. package/skills/buildkite-pipelines/SKILL.md +0 -481
  48. package/skills/buildkite-pipelines/agents/openai.yaml +0 -6
  49. package/skills/buildkite-pipelines/assets/buildkite-icon-large.png +0 -0
  50. package/skills/buildkite-pipelines/assets/buildkite-icon-small.png +0 -0
  51. package/skills/buildkite-pipelines/examples/basic-pipeline.yml +0 -24
  52. package/skills/buildkite-pipelines/examples/optimized-pipeline.yml +0 -100
  53. package/skills/buildkite-pipelines/references/advanced-patterns.md +0 -286
  54. package/skills/buildkite-pipelines/references/retry-and-error-codes.md +0 -131
  55. package/skills/buildkite-pipelines/references/step-types-reference.md +0 -225
  56. package/skills/buildkite-secure-delivery/SKILL.md +0 -182
  57. package/skills/buildkite-secure-delivery/agents/openai.yaml +0 -6
  58. package/skills/buildkite-secure-delivery/assets/buildkite-icon-large.png +0 -0
  59. package/skills/buildkite-secure-delivery/assets/buildkite-icon-small.png +0 -0
  60. package/skills/buildkite-secure-delivery/references/oidc-cloud-providers.md +0 -83
  61. package/skills/buildkite-secure-delivery/references/package-publishing.md +0 -100
  62. package/skills/buildkite-test-engine/SKILL.md +0 -256
  63. package/skills/buildkite-test-engine/agents/openai.yaml +0 -6
  64. package/skills/buildkite-test-engine/assets/buildkite-icon-large.png +0 -0
  65. package/skills/buildkite-test-engine/assets/buildkite-icon-small.png +0 -0
  66. package/skills/buildkite-test-engine/examples/bktec-splitting.yml +0 -16
  67. package/skills/buildkite-test-engine/examples/collector-pipeline.yml +0 -11
  68. package/skills/buildkite-test-engine/references/collectors.md +0 -198
  69. package/skills/buildkite-test-engine/references/splitting-examples.md +0 -93
@@ -1,509 +0,0 @@
1
- ---
2
- name: buildkite-agent-runtime
3
- description: >
4
- ALWAYS use this skill when the user's message begins with "Inside a
5
- Buildkite step," — that prefix is a hard trigger regardless of what
6
- follows. Specifically fires on the exact phrasings: "Inside a Buildkite
7
- step, Get or update a step attribute, please.", "Inside a Buildkite
8
- step, Please upload artifacts from a step.", "Inside a Buildkite step,
9
- Help me add an annotation.", "Inside a Buildkite step, Please add an
10
- annotation.", "Inside a Buildkite step, Could you upload pipeline
11
- dynamically for me?", "Inside a Buildkite step, Help me request an OIDC
12
- token inside a step.", "Inside a Buildkite step, acquire a distributed
13
- lock", "Inside a Buildkite step, retrieve a cluster secret at runtime",
14
- "Inside a Buildkite step, redact secrets from logs", "Inside a
15
- Buildkite step, set or get meta-data between steps".
16
- Use when the user wants to call the `buildkite-agent` binary from inside
17
- a running job step — annotating builds, uploading or downloading artifacts,
18
- setting or getting meta-data between steps, uploading dynamic pipeline YAML,
19
- requesting an OIDC token, acquiring distributed locks, getting or updating
20
- a step attribute, redacting secrets from logs, or fetching cluster secrets
21
- at runtime.
22
- Also triggers on natural phrasings including: "Help me add an annotation.",
23
- "Please add an annotation.", "Please upload artifacts from a step.",
24
- "Could you upload pipeline dynamically for me?",
25
- "Help me request an OIDC token inside a step.",
26
- "Get or update a step attribute, please.",
27
- "pls acquire a distributed lock", "gonna need to add an annotation",
28
- "quick q — can i get or update a step attribute", and typo'd variants
29
- like "request an IDC token inside a step", "retrieve a custer secret at runtime".
30
- Also fires on `buildkite-agent annotate`, `buildkite-agent artifact upload/download`,
31
- `buildkite-agent meta-data set/get`, `buildkite-agent pipeline upload`,
32
- `buildkite-agent oidc request-token`, `buildkite-agent step`,
33
- `buildkite-agent lock`, `buildkite-agent env`, `buildkite-agent secret get`,
34
- `buildkite-agent redactor add`, `buildkite-agent tool sign/verify`, or any
35
- `buildkite-agent` subcommand invoked inside a running job step.
36
- Do NOT use when the user is provisioning or configuring rather than calling
37
- from inside a step — cluster/queue/token provisioning is
38
- `buildkite-agent-infrastructure`, and OIDC trust setup (the IdP side, vs
39
- in-step `oidc request-token`) is `buildkite-secure-delivery`. Do NOT use
40
- for authoring `.buildkite/pipeline.yml` step definitions — that's
41
- `buildkite-pipelines`. Do NOT use when the user's message starts with
42
- "Using the Buildkite CLI," — that prefix routes to `buildkite-cli`
43
- even when the action is "upload artifacts", "list builds", or any
44
- other phrasing that also names a `buildkite-agent` capability; the
45
- `bk` CLI and the in-step `buildkite-agent` binary are distinct
46
- surfaces, and the "Using the Buildkite CLI," prefix is load-bearing
47
- for `buildkite-cli`.
48
- ---
49
-
50
- # Buildkite Agent Runtime
51
-
52
- The `buildkite-agent` binary provides subcommands for interacting with Buildkite from within running job steps — creating annotations, uploading artifacts, sharing state between jobs, generating dynamic pipelines, requesting OIDC tokens, and more. This skill covers the command syntax, flags, and patterns for every in-job subcommand.
53
-
54
- ## Quick Start
55
-
56
- A step that runs tests, annotates failures, uploads coverage, and stores a result flag for downstream jobs:
57
-
58
- ```yaml
59
- steps:
60
- - label: ":test_tube: Tests"
61
- command: |
62
- if ! make test 2>&1 | tee test-output.txt; then
63
- buildkite-agent annotate --style "error" --context "test-failures" < test-output.txt
64
- buildkite-agent meta-data set "tests-passed" "false"
65
- exit 1
66
- fi
67
- buildkite-agent annotate "All tests passed :white_check_mark:" --style "success" --context "test-results"
68
- buildkite-agent artifact upload "coverage/**/*"
69
- buildkite-agent meta-data set "tests-passed" "true"
70
- ```
71
-
72
- A downstream step reading that state:
73
-
74
- ```yaml
75
- - label: ":rocket: Deploy"
76
- command: |
77
- PASSED=$(buildkite-agent meta-data get "tests-passed")
78
- if [[ "$PASSED" != "true" ]]; then
79
- echo "Tests did not pass, skipping deploy"
80
- exit 0
81
- fi
82
- scripts/deploy.sh
83
- depends_on: "test-step"
84
- ```
85
-
86
- ## Annotations
87
-
88
- Surface build results directly on the build page. Annotations support Markdown and HTML.
89
-
90
- ### Creating annotations
91
-
92
- ```bash
93
- # Simple text annotation
94
- buildkite-agent annotate "Deploy completed successfully" --style "success" --context "deploy"
95
-
96
- # Pipe from a file
97
- buildkite-agent annotate --style "error" --context "test-failures" < test-output.md
98
- ```
99
-
100
- ### Key flags
101
-
102
- | Flag | Short | Default | Description |
103
- |------|-------|---------|-------------|
104
- | `--style` | `-s` | `default` | Visual style: `default`, `info`, `warning`, `error`, `success` |
105
- | `--context` | `-c` | random UUID | Unique ID — reusing a context replaces the annotation |
106
- | `--append` | — | `false` | Append to existing annotation with same context instead of replacing |
107
- | `--priority` | — | `3` | Display priority (1-10). Higher numbers appear first |
108
- | `--job` | — | current job | Job ID to annotate (rarely needed) |
109
-
110
- ### Replacing vs appending
111
-
112
- - **Same `--context` without `--append`** replaces the annotation; **with `--append`** appends below existing content.
113
- - Always use a stable `--context` value so reruns update the same annotation instead of creating duplicates.
114
-
115
- > For pipeline-level `notify:` configuration, see the **buildkite-pipelines** skill.
116
-
117
- ## Artifacts
118
-
119
- Upload files as build artifacts, download them in later steps or other builds, and search by glob.
120
-
121
- ### Upload
122
-
123
- ```bash
124
- # Upload a single file
125
- buildkite-agent artifact upload "pkg/release.tar.gz"
126
-
127
- # Upload with glob pattern
128
- buildkite-agent artifact upload "dist/**/*"
129
- ```
130
-
131
- ### Download
132
-
133
- ```bash
134
- # Download to current directory
135
- buildkite-agent artifact download "pkg/release.tar.gz" .
136
-
137
- # Download from a specific step
138
- buildkite-agent artifact download "dist/*" . --step "build-step"
139
- ```
140
-
141
- ### Search
142
-
143
- ```bash
144
- # List matching artifacts
145
- buildkite-agent artifact search "pkg/*.tar.gz" --build "$BUILDKITE_BUILD_ID"
146
- ```
147
-
148
- For complete flag tables, see `references/flag-reference.md`.
149
-
150
- > For the declarative `artifact_paths:` YAML key, see the **buildkite-pipelines** skill. For `bk artifact` CLI commands, see the **buildkite-cli** skill.
151
-
152
- ## Meta-data
153
-
154
- A build-wide key-value store for sharing state between jobs. Set a value in one job, read it in any other job in the same build.
155
-
156
- ### Set
157
-
158
- ```bash
159
- buildkite-agent meta-data set "release-version" "1.4.2"
160
- ```
161
-
162
- ### Get
163
-
164
- ```bash
165
- VERSION=$(buildkite-agent meta-data get "release-version")
166
- ```
167
-
168
- Use `--default` to return a fallback value instead of a non-zero exit when the key is missing: `buildkite-agent meta-data get "deploy-env" --default "staging"`.
169
-
170
- ### Check existence
171
-
172
- ```bash
173
- # Returns exit code 0 if exists, 100 if not
174
- if buildkite-agent meta-data exists "release-version"; then
175
- echo "Version already set"
176
- fi
177
- ```
178
-
179
- ### Common patterns
180
-
181
- **Block step field values** are stored automatically as meta-data. Retrieve them by field key:
182
-
183
- ```bash
184
- # After a block step with fields: [{key: "release-name", text: "Release Name"}]
185
- RELEASE_NAME=$(buildkite-agent meta-data get "release-name")
186
- ```
187
-
188
- ## Pipeline Upload
189
-
190
- Dynamically add steps to a running build. The core mechanism behind dynamic pipelines — generate YAML at runtime and upload it.
191
-
192
- ### Basic usage
193
-
194
- ```bash
195
- # Upload a specific file
196
- buildkite-agent pipeline upload .buildkite/deploy-steps.yml
197
-
198
- # Pipe generated YAML from stdin
199
- ./scripts/generate-pipeline.sh | buildkite-agent pipeline upload
200
- ```
201
-
202
- ### Replace mode
203
-
204
- By default, uploaded steps are **appended** after the current step. Use `--replace` to replace the entire remaining pipeline:
205
-
206
- ```bash
207
- # Replace all remaining steps with the uploaded ones
208
- buildkite-agent pipeline upload --replace .buildkite/new-pipeline.yml
209
- ```
210
-
211
- ### Key flags
212
-
213
- | Flag | Default | Description |
214
- |------|---------|-------------|
215
- | `--replace` | `false` | Replace remaining pipeline steps instead of appending |
216
- | `--no-interpolation` | `false` | Skip environment variable interpolation in the uploaded YAML |
217
- | `--dry-run` | `false` | Validate and output the pipeline without uploading |
218
-
219
- > For pipeline YAML syntax and step types, see the **buildkite-pipelines** skill.
220
-
221
- ## OIDC Tokens
222
-
223
- Request short-lived OpenID Connect tokens from within a job step for authenticating to external services (cloud providers, package registries) without static credentials.
224
-
225
- ### Basic token request
226
-
227
- ```bash
228
- # Request a token for a specific audience
229
- TOKEN=$(buildkite-agent oidc request-token --audience "https://packages.buildkite.com/my-org/my-registry")
230
- ```
231
-
232
- ### Cloud provider authentication
233
-
234
- ```bash
235
- # AWS — request token with STS audience
236
- TOKEN=$(buildkite-agent oidc request-token --audience "sts.amazonaws.com")
237
- ```
238
-
239
- ### Key flags
240
-
241
- | Flag | Default | Description |
242
- |------|---------|-------------|
243
- | `--audience` | Buildkite endpoint | Target service URL — must match the OIDC provider audience configuration |
244
- | `--lifetime` | `600` | Token lifetime in seconds |
245
- | `--claim` | — | Comma-separated optional claims to include (e.g., `organization_id,pipeline_id`) |
246
- | `--aws-session-tag` | — | Comma-separated claims to map as AWS session tags |
247
-
248
- > For end-to-end OIDC auth flows, cloud provider setup, and token claim details, see the **buildkite-secure-delivery** skill.
249
-
250
- ## Step Management
251
-
252
- Read or modify step attributes at runtime. Useful for conditional logic within steps and build automation.
253
-
254
- ### Get step attributes
255
-
256
- ```bash
257
- # Get current step's label
258
- LABEL=$(buildkite-agent step get "label")
259
-
260
- # Get another step's attribute by key
261
- STATE=$(buildkite-agent step get "state" --step "deploy-step")
262
-
263
- # Get the outcome of a step
264
- OUTCOME=$(buildkite-agent step get "outcome" --step "test-step")
265
- ```
266
-
267
- ### Update step attributes
268
-
269
- ```bash
270
- # Update current step's label dynamically
271
- buildkite-agent step update "label" ":rocket: Deploying v${VERSION}"
272
-
273
- # Update another step
274
- buildkite-agent step update "label" ":hourglass: Waiting..." --step "pending-step"
275
- ```
276
-
277
- ### Cancel a step
278
-
279
- ```bash
280
- # Cancel a specific step by key
281
- buildkite-agent step cancel --step "optional-step"
282
- ```
283
-
284
- ### Key flags
285
-
286
- | Flag | Default | Description |
287
- |------|---------|-------------|
288
- | `--step` | current step | Step key or UUID to target |
289
- | `--build` | current build | Build UUID (for cross-build operations) |
290
- | `--format` | `string` | Output format for `get` |
291
-
292
- ### Available step attributes
293
-
294
- | Attribute | Readable | Writable | Description |
295
- |-----------|----------|----------|-------------|
296
- | `label` | yes | yes | Step label displayed in UI |
297
- | `state` | yes | no | Current state (`running`, `passed`, `failed`, etc.) |
298
- | `outcome` | yes | no | Final outcome of the step |
299
- | `key` | yes | no | Step key identifier |
300
-
301
- ## Distributed Locks
302
-
303
- Coordinate parallel jobs within a build using distributed mutex locks. Prevents race conditions when multiple jobs access shared resources.
304
-
305
- ### Acquire / release pattern
306
-
307
- ```bash
308
- #!/bin/bash
309
- set -euo pipefail
310
-
311
- # Acquire lock — blocks until available, returns a token
312
- token=$(buildkite-agent lock acquire "database-migration")
313
- trap 'buildkite-agent lock release "database-migration" "${token}"' EXIT
314
-
315
- # Critical section — only one job runs this at a time
316
- bundle exec rails db:migrate
317
- ```
318
-
319
- ### Do / done pattern (one-time setup)
320
-
321
- Run a setup task exactly once across all parallel jobs:
322
-
323
- ```bash
324
- #!/bin/bash
325
- echo "+++ Setting up shared test environment"
326
-
327
- if [[ $(buildkite-agent lock do "test-env-setup") == "do" ]]; then
328
- echo "Downloading test assets..."
329
- curl -o /tmp/test-data.zip https://releases.example.com/data.zip
330
- unzip /tmp/test-data.zip -d /tmp/shared-test-files/
331
- buildkite-agent lock done "test-env-setup"
332
- else
333
- echo "Assets already prepared by another job"
334
- fi
335
-
336
- # All jobs continue here
337
- run-tests.sh
338
- ```
339
-
340
- ### Key flags
341
-
342
- | Subcommand | Flags | Description |
343
- |------------|-------|-------------|
344
- | `lock acquire <name>` | `--timeout` | Maximum wait time in seconds (0 = wait forever) |
345
- | `lock release <name> <token>` | — | Release with the token from `acquire` |
346
- | `lock do <name>` | — | Returns `do` if lock acquired, `done` if already completed |
347
- | `lock done <name>` | — | Mark a `do` lock as completed |
348
-
349
- ## Environment
350
-
351
- Inspect and modify the job's environment variables. Primarily useful for debugging lifecycle hooks and understanding what environment changes hooks made.
352
-
353
- ```bash
354
- # Dump all environment variables as JSON
355
- buildkite-agent env dump | jq .
356
-
357
- # Get a specific variable
358
- buildkite-agent env get "BUILDKITE_BRANCH"
359
-
360
- # Set a variable for subsequent hooks and the command
361
- buildkite-agent env set "DEPLOY_TARGET" "production"
362
- ```
363
-
364
- ### Key flags
365
-
366
- | Subcommand | Default | Description |
367
- |------------|---------|-------------|
368
- | `env dump` | JSON to stdout | Dump all environment variables |
369
- | `env get <keys...>` | — | Get one or more specific variables |
370
- | `env set <key> <value>` | — | Set a variable for subsequent phases |
371
- | `env unset <key>` | — | Remove a variable from subsequent phases |
372
-
373
- ### Debugging hooks
374
-
375
- The `env dump` command is particularly useful in lifecycle hooks to see what prior hooks changed:
376
-
377
- ```bash
378
- #!/bin/bash
379
- # .buildkite/hooks/pre-command
380
- echo "--- Environment after environment hook:"
381
- buildkite-agent env dump | jq 'keys'
382
- ```
383
-
384
- > For agent lifecycle hooks and `buildkite-agent.cfg` configuration, see the **buildkite-agent-infrastructure** skill.
385
-
386
- ## Secrets
387
-
388
- Retrieve cluster secrets at runtime from within job steps. Secrets retrieved this way are automatically added to the log redactor.
389
-
390
- ### Basic usage
391
-
392
- ```bash
393
- # Get a secret value
394
- SECRET_VAR=$(buildkite-agent secret get "deploy-key")
395
-
396
- # Pass directly to a tool
397
- cli-tool --token "$(buildkite-agent secret get "api-token")"
398
- ```
399
-
400
- ### Key flags
401
-
402
- | Flag | Default | Description |
403
- |------|---------|-------------|
404
- | `--format` | `string` | Output format: `string` (single secret) or `env` (multiple, KEY="value" pairs) |
405
- | `--skip-redaction` | `false` | Do not add the secret value to the log redactor |
406
- | `--job` | current job | Job ID context |
407
-
408
- By default, `secret get` automatically registers retrieved values with the log redactor, masking them as `[REDACTED]` in subsequent output.
409
-
410
- > For setting up cluster secrets, see the **buildkite-agent-infrastructure** skill. For the declarative `secrets:` pipeline YAML key, see the **buildkite-pipelines** skill.
411
-
412
- ## Log Redaction
413
-
414
- Add values to the build log redactor at runtime so they are masked in all subsequent output. Use this for dynamically-retrieved secrets that were not declared via `secrets:` or `buildkite-agent secret get`.
415
-
416
- ### Basic usage
417
-
418
- ```bash
419
- # Fetch a token from an external source
420
- DYNAMIC_TOKEN=$(curl -s https://vault.example.com/token)
421
-
422
- # Register it with the redactor before using it
423
- echo "$DYNAMIC_TOKEN" | buildkite-agent redactor add
424
-
425
- # Now any log output containing the token value shows [REDACTED]
426
- echo "Using token: $DYNAMIC_TOKEN"
427
- # Output: Using token: [REDACTED]
428
- ```
429
-
430
- ### Multiple values
431
-
432
- ```bash
433
- # Redact multiple values
434
- echo "$SECRET1" | buildkite-agent redactor add
435
- echo "$SECRET2" | buildkite-agent redactor add
436
- ```
437
-
438
- ### When to use redactor vs secret get
439
-
440
- | Scenario | Use |
441
- |----------|-----|
442
- | Secret stored in Buildkite cluster secrets | `buildkite-agent secret get` (auto-redacts) |
443
- | Secret from external vault (HashiCorp Vault, AWS SSM, etc.) | Fetch externally, then `buildkite-agent redactor add` |
444
- | Computed sensitive value (temporary token, derived key) | `buildkite-agent redactor add` |
445
-
446
- ## Tool Signing
447
-
448
- Sign and verify pipeline step definitions for integrity checking. Ensures steps have not been tampered with between definition and execution.
449
-
450
- ### Sign a pipeline
451
-
452
- ```bash
453
- # Sign step configuration using a JWKS key
454
- buildkite-agent tool sign --jwks-file /etc/buildkite-agent/signing-key.json \
455
- --step "command=make test" \
456
- --step "plugins=docker#v5.12.0"
457
- ```
458
-
459
- ### Verify a signature
460
-
461
- ```bash
462
- # Verify step signature
463
- buildkite-agent tool verify --jwks-file /etc/buildkite-agent/verification-key.json \
464
- --step "command=make test"
465
- ```
466
-
467
- ### Key flags
468
-
469
- | Flag | Default | Description |
470
- |------|---------|-------------|
471
- | `--jwks-file` | — | Path to JWKS key file for signing or verification |
472
- | `--jwks-key-id` | — | Key ID to use from the JWKS file |
473
- | `--step` | — | Step attributes to sign/verify (repeatable) |
474
-
475
- > For pipeline signing configuration and rollout strategy, see the **buildkite-secure-delivery** skill.
476
-
477
- ## Common Mistakes
478
-
479
- | Mistake | What happens | Fix |
480
- |---------|-------------|-----|
481
- | Missing `--context` on `annotate` | Each call creates a new annotation instead of updating | Always pass `--context` with a stable identifier |
482
- | Using `--append` without matching `--context` | Append has no effect — creates a new annotation | Ensure `--context` matches the annotation to append to |
483
- | Forgetting to quote artifact glob patterns | Shell expands globs before `buildkite-agent` sees them | Always quote: `"dist/**/*"` not `dist/**/*` |
484
- | Reading `meta-data get` before the writing job completes | Key does not exist, command fails with non-zero exit | Use `depends_on` or `wait` to enforce ordering, or use `--default` |
485
- | Using `pipeline upload --replace` unintentionally | Removes all remaining steps in the build | Only use `--replace` when intentionally rebuilding the entire pipeline |
486
- | Not releasing locks on script failure | Lock held indefinitely, blocking other jobs | Use `trap ... EXIT` to release locks on any exit |
487
- | Passing `--audience` that doesn't match OIDC provider config | Token rejected by the target service | Audience must exactly match the provider's configured audience URL |
488
- | Using `--skip-redaction` with actual secrets | Secret values appear in plain text in build logs | Only use `--skip-redaction` for non-sensitive configuration values |
489
- | Calling `env set` expecting it to affect the current shell | Variable is set for subsequent hooks/phases, not the current script | Use `export VAR=value` for current-script variables; `env set` for cross-phase |
490
- | Passing large values via environment variables | OS-level env size limits cause silent truncation or job failure | Switch to file-based approaches (artifacts, meta-data with files) for payloads larger than a few KB |
491
- | Uploading pipeline YAML with unescaped `$` in `--no-interpolation` mode off | Variables interpolated unexpectedly, producing malformed YAML | Use `--no-interpolation` when YAML contains literal `$` characters |
492
-
493
- ## Additional Resources
494
-
495
- ### Reference Files
496
- - **`references/flag-reference.md`** — Complete flag tables for all subcommands including upload, download, search, shasum, annotate, meta-data, pipeline upload, oidc, step, lock, env, secret, redactor, and tool
497
- - **`references/patterns-and-recipes.md`** — Advanced multi-subcommand patterns: test failure annotation pipelines, cross-job state machines, OIDC-authenticated Docker push, parallel job coordination with locks, environment debugging
498
-
499
- ## Further Reading
500
-
501
- - [Buildkite Docs for LLMs](https://buildkite.com/docs/llms.txt)
502
- - [Agent CLI — annotate](https://buildkite.com/docs/agent/v3/cli-annotate.md)
503
- - [Agent CLI — artifact](https://buildkite.com/docs/agent/v3/cli-artifact.md)
504
- - [Agent CLI — meta-data](https://buildkite.com/docs/agent/v3/cli-meta-data.md)
505
- - [Agent CLI — pipeline](https://buildkite.com/docs/agent/v3/cli-pipeline.md)
506
- - [Agent CLI — OIDC](https://buildkite.com/docs/agent/v3/cli-oidc.md)
507
- - [Agent CLI — lock](https://buildkite.com/docs/agent/v3/cli-lock.md)
508
- - [Managing secrets with Buildkite secrets](https://buildkite.com/docs/pipelines/security/secrets/buildkite-secrets.md)
509
- - [Dynamic pipelines](https://buildkite.com/docs/pipelines/configure/dynamic-pipelines.md)
@@ -1,6 +0,0 @@
1
- interface:
2
- display_name: "Buildkite Agent Runtime"
3
- short_description: "In-job agent subcommands for annotations, artifacts, meta-data, and more"
4
- icon_small: "./assets/buildkite-icon-small.png"
5
- icon_large: "./assets/buildkite-icon-large.png"
6
- brand_color: "#00D974"