From ea764f85384977e044a1e71b38fac147003664b0 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Thu, 18 Jun 2026 22:50:44 +0100 Subject: [PATCH] feat: disable runner debug logs by default --- .changeset/runner-send-debug-logs-gate.md | 5 +++++ apps/supervisor/src/index.ts | 1 + apps/supervisor/src/workloadManager/compute.ts | 2 ++ apps/supervisor/src/workloadManager/docker.ts | 1 + apps/supervisor/src/workloadManager/kubernetes.ts | 4 ++++ packages/cli-v3/src/entryPoints/managed/env.ts | 13 +++++++++++++ packages/cli-v3/src/entryPoints/managed/logger.ts | 5 +++++ 7 files changed, 31 insertions(+) create mode 100644 .changeset/runner-send-debug-logs-gate.md diff --git a/.changeset/runner-send-debug-logs-gate.md b/.changeset/runner-send-debug-logs-gate.md new file mode 100644 index 00000000000..64586069a88 --- /dev/null +++ b/.changeset/runner-send-debug-logs-gate.md @@ -0,0 +1,5 @@ +--- +"trigger.dev": patch +--- + +Runner debug logs are now disabled by default. Set `SEND_RUN_DEBUG_LOGS=true` on the supervisor to re-enable them. diff --git a/apps/supervisor/src/index.ts b/apps/supervisor/src/index.ts index c6fe94eb70f..647549da7d1 100644 --- a/apps/supervisor/src/index.ts +++ b/apps/supervisor/src/index.ts @@ -157,6 +157,7 @@ class ManagedSupervisor { instanceName: env.TRIGGER_WORKER_INSTANCE_NAME, otelEndpoint: env.OTEL_EXPORTER_OTLP_ENDPOINT, prettyLogs: env.RUNNER_PRETTY_LOGS, + sendRunDebugLogs: env.SEND_RUN_DEBUG_LOGS, }, createRetry: { maxAttempts: env.COMPUTE_INSTANCE_CREATE_MAX_ATTEMPTS, diff --git a/apps/supervisor/src/workloadManager/compute.ts b/apps/supervisor/src/workloadManager/compute.ts index 88c7645bbdf..7a4270513cf 100644 --- a/apps/supervisor/src/workloadManager/compute.ts +++ b/apps/supervisor/src/workloadManager/compute.ts @@ -75,6 +75,7 @@ type ComputeWorkloadManagerOptions = WorkloadManagerOptions & { instanceName: string; otelEndpoint: string; prettyLogs: boolean; + sendRunDebugLogs: boolean; }; createRetry?: { maxAttempts: number; @@ -162,6 +163,7 @@ export class ComputeWorkloadManager implements WorkloadManager { TRIGGER_MACHINE_CPU: String(opts.machine.cpu), TRIGGER_MACHINE_MEMORY: String(opts.machine.memory), PRETTY_LOGS: String(this.opts.runner.prettyLogs), + TRIGGER_SEND_RUN_DEBUG_LOGS: String(this.opts.runner.sendRunDebugLogs), }; if (this.opts.warmStartUrl) { diff --git a/apps/supervisor/src/workloadManager/docker.ts b/apps/supervisor/src/workloadManager/docker.ts index 66405df9ba5..1d8fec1df78 100644 --- a/apps/supervisor/src/workloadManager/docker.ts +++ b/apps/supervisor/src/workloadManager/docker.ts @@ -84,6 +84,7 @@ export class DockerWorkloadManager implements WorkloadManager { `TRIGGER_MACHINE_CPU=${opts.machine.cpu}`, `TRIGGER_MACHINE_MEMORY=${opts.machine.memory}`, `PRETTY_LOGS=${env.RUNNER_PRETTY_LOGS}`, + `TRIGGER_SEND_RUN_DEBUG_LOGS=${env.SEND_RUN_DEBUG_LOGS}`, ]; if (this.opts.warmStartUrl) { diff --git a/apps/supervisor/src/workloadManager/kubernetes.ts b/apps/supervisor/src/workloadManager/kubernetes.ts index b2ed05c9f11..9e79fff76c2 100644 --- a/apps/supervisor/src/workloadManager/kubernetes.ts +++ b/apps/supervisor/src/workloadManager/kubernetes.ts @@ -208,6 +208,10 @@ export class KubernetesWorkloadManager implements WorkloadManager { name: "TRIGGER_MACHINE_MEMORY", value: `${opts.machine.memory}`, }, + { + name: "TRIGGER_SEND_RUN_DEBUG_LOGS", + value: `${env.SEND_RUN_DEBUG_LOGS}`, + }, { name: "LIMITS_CPU", valueFrom: { diff --git a/packages/cli-v3/src/entryPoints/managed/env.ts b/packages/cli-v3/src/entryPoints/managed/env.ts index 5e7c5b3f28b..901a23d6122 100644 --- a/packages/cli-v3/src/entryPoints/managed/env.ts +++ b/packages/cli-v3/src/entryPoints/managed/env.ts @@ -8,6 +8,13 @@ const DateEnv = z .transform((val) => new Date(parseInt(val, 10))) .pipe(z.date()); +const BoolEnv = z.preprocess((val) => { + if (typeof val !== "string") { + return val; + } + return ["true", "1"].includes(val.toLowerCase().trim()); +}, z.boolean()); + // All IDs are friendly IDs const Env = z.object({ // Set at build time @@ -47,6 +54,9 @@ const Env = z.object({ TRIGGER_SNAPSHOT_POLL_INTERVAL_SECONDS: z.coerce.number().default(5), TRIGGER_SUCCESS_EXIT_CODE: z.coerce.number().default(0), TRIGGER_FAILURE_EXIT_CODE: z.coerce.number().default(1), + + // Gates the per-log-line debug-log POST to the supervisor; off by default + TRIGGER_SEND_RUN_DEBUG_LOGS: BoolEnv.default(false), }); type Env = z.infer; @@ -136,6 +146,9 @@ export class RunnerEnv { get TRIGGER_FAILURE_EXIT_CODE() { return this.env.TRIGGER_FAILURE_EXIT_CODE; } + get TRIGGER_SEND_RUN_DEBUG_LOGS() { + return this.env.TRIGGER_SEND_RUN_DEBUG_LOGS; + } get TRIGGER_HEARTBEAT_INTERVAL_SECONDS() { return this.env.TRIGGER_HEARTBEAT_INTERVAL_SECONDS; } diff --git a/packages/cli-v3/src/entryPoints/managed/logger.ts b/packages/cli-v3/src/entryPoints/managed/logger.ts index f0f6677732f..ef3bd097651 100644 --- a/packages/cli-v3/src/entryPoints/managed/logger.ts +++ b/packages/cli-v3/src/entryPoints/managed/logger.ts @@ -55,6 +55,11 @@ export class ManagedRunLogger implements RunLogger { this.logger.log(message, mergedProperties); } + // Skip the per-log-line POST to the supervisor unless explicitly enabled + if (!this.env.TRIGGER_SEND_RUN_DEBUG_LOGS) { + return; + } + const flattenedProperties = flattenAttributes( mergedProperties ) satisfies WorkloadDebugLogRequestBody["properties"];