apiVersion: jenkins.io/v1 kind: PipelineActivity metadata: annotations: lighthouse.jenkins-x.io/cloneURI: https://github.com/greencapitaltrade/jarvis.git lighthouse.jenkins-x.io/job: release pipeline.jenkins-x.io/traceID: f933bbe8b21d0d3acedb72b735d5e382 creationTimestamp: "2026-07-03T22:30:35Z" generation: 7 labels: branch: main build: "80" context: release created-by-lighthouse: "true" event-GUID: cb684a3e-772e-11f1-96ac-4e45c22307b8 lighthouse.jenkins-x.io/baseSHA: bd40b9a52d87ecd65246b0f123b8aa294b604efe lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1783117835433" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: capitaltrade-jarvis-main-release-4zzzl lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: bd40b9a52d87ecd65246b0f123b8aa294b604efe lighthouse.jenkins-x.io/refs.org: greencapitaltrade lighthouse.jenkins-x.io/refs.repo: jarvis lighthouse.jenkins-x.io/type: postsubmit owner: greencapitaltrade podName: capitaltrade-jarvis-main-release-mcj7p-from-build-pack-pod provider: github repository: jarvis tekton.dev/pipeline: capitaltrade-jarvis-main-release managedFields: - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:branch: {} f:context: {} f:owner: {} f:provider: {} f:repository: {} f:spec: f:lastCommitMessage: {} f:lastCommitSHA: {} f:releaseNotesURL: {} f:version: {} manager: jx-changelog-0.10.22 operation: Update time: "2026-07-03T22:36:10Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:lighthouse.jenkins-x.io/cloneURI: {} f:lighthouse.jenkins-x.io/job: {} f:pipeline.jenkins-x.io/traceID: {} f:labels: .: {} f:build: {} f:created-by-lighthouse: {} f:event-GUID: {} f:lighthouse.jenkins-x.io/baseSHA: {} f:lighthouse.jenkins-x.io/branch: {} f:lighthouse.jenkins-x.io/buildNum: {} f:lighthouse.jenkins-x.io/context: {} f:lighthouse.jenkins-x.io/id: {} f:lighthouse.jenkins-x.io/job: {} f:lighthouse.jenkins-x.io/lastCommitSHA: {} f:lighthouse.jenkins-x.io/refs.org: {} f:lighthouse.jenkins-x.io/refs.repo: {} f:lighthouse.jenkins-x.io/type: {} f:podName: {} f:tekton.dev/pipeline: {} f:spec: .: {} f:baseSHA: {} f:batchPipelineActivity: {} f:build: {} f:buildLogsUrl: {} f:completedTimestamp: {} f:context: {} f:gitBranch: {} f:gitOwner: {} f:gitRepository: {} f:gitUrl: {} f:message: {} f:pipeline: {} f:startedTimestamp: {} f:status: {} f:steps: {} manager: jx-build-controller operation: Update time: "2026-07-03T22:37:55Z" name: greencapitaltrade-jarvis-main-80 namespace: jx resourceVersion: "158889000" uid: 86dff705-0ce2-46e9-8f5a-184f15d930db spec: baseSHA: bd40b9a52d87ecd65246b0f123b8aa294b604efe batchPipelineActivity: {} build: "80" buildLogsUrl: s3://logs-gct-prod-20260425045301534100000007/jenkins-x/logs/greencapitaltrade/jarvis/main/80.log completedTimestamp: "2026-07-03T22:37:47Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: jarvis gitUrl: https://github.com/greencapitaltrade/jarvis.git lastCommitMessage: | fix(jarvis): scrub secrets from stage subprocess env (#171) Stage scripts run model agents — the engineer runs unrestricted Bash on attacker-influenceable issue/PR content — and inherited the full daemon environment, including the org-write bot PAT and WEBHOOK_SECRET. A prompt-injected agent could `printenv` and exfiltrate them (worktree isolation isolates files, not the environment). - stage_subprocess_env(): daemon-only secrets (WEBHOOK_SECRET, BASIC_AUTH_USER/PASS) are always stripped from the stage env. - The GitHub PAT is moved out of the environment into gh's config file (_ensure_gh_file_auth: `gh auth login --with-token` + verify with a token-less env), so it isn't in /proc//environ of the agent or its children. git push keeps working via the existing `gh auth git-credential` helper (reads hosts.yml). - Fail-safe: if gh can't be verified as authenticated from files, the token is KEPT in the stage env — this hardening can never break the pipeline's GitHub access. Applied to the agent stage subprocess only; route.sh (trusted, no agent) is unchanged. Residual (tracked separately): the token is still on disk (hosts.yml, 0600) which a determined agent could read — fully closing this needs egress policy + a minimal-scope/GitHub-App token. This removes the trivial printenv exfiltration. Co-Authored-By: Claude Opus 4.8 lastCommitSHA: 2555c86ff335123a80e44dc5f622b8839a2c2c1f message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/jarvis/main releaseNotesURL: https://github.com/greencapitaltrade/jarvis/releases/tag/v0.13.9 startedTimestamp: "2026-07-03T22:30:35Z" status: Succeeded steps: - kind: Stage stage: completedTimestamp: "2026-07-03T22:37:47Z" name: from build pack startedTimestamp: "2026-07-03T22:30:57Z" status: Succeeded steps: - completedTimestamp: "2026-07-03T22:30:58Z" name: Git Clone startedTimestamp: "2026-07-03T22:30:57Z" status: Succeeded - completedTimestamp: "2026-07-03T22:31:00Z" name: Next Version startedTimestamp: "2026-07-03T22:30:59Z" status: Succeeded - completedTimestamp: "2026-07-03T22:31:05Z" name: Jx Variables startedTimestamp: "2026-07-03T22:31:01Z" status: Succeeded - completedTimestamp: "2026-07-03T22:33:02Z" name: Build Test startedTimestamp: "2026-07-03T22:31:06Z" status: Succeeded - completedTimestamp: "2026-07-03T22:33:03Z" name: Check Registry startedTimestamp: "2026-07-03T22:33:03Z" status: Succeeded - completedTimestamp: "2026-07-03T22:35:48Z" name: Build Container Build startedTimestamp: "2026-07-03T22:33:03Z" status: Succeeded - completedTimestamp: "2026-07-03T22:36:10Z" name: Promote Changelog startedTimestamp: "2026-07-03T22:35:48Z" status: Succeeded - completedTimestamp: "2026-07-03T22:36:13Z" name: Promote Helm Release startedTimestamp: "2026-07-03T22:36:10Z" status: Succeeded - completedTimestamp: "2026-07-03T22:36:59Z" name: Promote Jx Promote startedTimestamp: "2026-07-03T22:36:14Z" status: Succeeded - completedTimestamp: "2026-07-03T22:37:47Z" name: Publish Org Kb startedTimestamp: "2026-07-03T22:36:59Z" status: Succeeded - kind: Promote promote: environment: production pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/4607 startedTimestamp: "2026-07-03T22:36:56Z" status: Succeeded startedTimestamp: "2026-07-03T22:36:56Z" status: Succeeded version: 0.13.9 status: {}