Title: Warden weekly sweep · Issue #436 · getsentry/XcodeBuildMCP · GitHub
Open Graph Title: Warden weekly sweep · Issue #436 · getsentry/XcodeBuildMCP
X Title: Warden weekly sweep · Issue #436 · getsentry/XcodeBuildMCP
Description: Warden Scheduled Scan Results Run: 2026-07-06T07:35:35.389Z Commit: db7e055 Summary Severity Count High 3 Low 2 Findings src/utils/template-manager.ts MK3-624 process.chdir() race condition corrupts cwd for concurrent scaffold requests (...
Open Graph Description: Warden Scheduled Scan Results Run: 2026-07-06T07:35:35.389Z Commit: db7e055 Summary Severity Count High 3 Low 2 Findings src/utils/template-manager.ts MK3-624 process.chdir() race condition corrupt...
X Description: Warden Scheduled Scan Results Run: 2026-07-06T07:35:35.389Z Commit: db7e055 Summary Severity Count High 3 Low 2 Findings src/utils/template-manager.ts MK3-624 process.chdir() race condition corrupt...
Opengraph URL: https://github.com/getsentry/XcodeBuildMCP/issues/436
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Warden weekly sweep","articleBody":"## Warden Scheduled Scan Results\n\n**Run:** 2026-07-06T07:35:35.389Z\n**Commit:** `db7e055`\n\n### Summary\n\n| Severity | Count |\n|----------|-------|\n| High | 3 |\n| Low | 2 |\n\n### Findings\n\n#### [`src/utils/template-manager.ts`](https://github.com/getsentry/XcodeBuildMCP/blob/db7e055c39d4e2c23cbd030f14ac8bc8329f61d8/src/utils/template-manager.ts)\n\n- `MK3-624` **process.chdir() race condition corrupts cwd for concurrent scaffold requests** ([L101-L113](https://github.com/getsentry/XcodeBuildMCP/blob/db7e055c39d4e2c23cbd030f14ac8bc8329f61d8/src/utils/template-manager.ts#L101-L113)) · high\n Using `process.chdir()` to set the extraction directory is process-global state; concurrent calls to `downloadTemplate` (e.g., two simultaneous scaffold tool invocations via the daemon) will race on `process.cwd()`, causing one or both to extract into the wrong directory or corrupt each other's state. Pass `-d tempDir` to `unzip` instead.\n\n#### [`src/utils/xcodebuild-domain-results.ts`](https://github.com/getsentry/XcodeBuildMCP/blob/db7e055c39d4e2c23cbd030f14ac8bc8329f61d8/src/utils/xcodebuild-domain-results.ts)\n\n- `QDW-KRS` **Import uses `.ts` extension instead of `.js`, breaking the build** ([L31](https://github.com/getsentry/XcodeBuildMCP/blob/db7e055c39d4e2c23cbd030f14ac8bc8329f61d8/src/utils/xcodebuild-domain-results.ts#L31)) · high\n This import uses a `.ts` extension, which is inconsistent with all other imports in the file (which use `.js`) and will fail compilation under `tsconfig.build.json`, which sets `allowImportingTsExtensions: false`.\n *Suggested fix:* Change the import extension from `.ts` to `.js` to match the convention used by all other imports in this file and satisfy the build tsconfig.\n\n#### [`src/utils/xcodemake.ts`](https://github.com/getsentry/XcodeBuildMCP/blob/db7e055c39d4e2c23cbd030f14ac8bc8329f61d8/src/utils/xcodemake.ts)\n\n- `AAX-FZV` **Remote script downloaded and executed without integrity verification** ([L63-L80](https://github.com/getsentry/XcodeBuildMCP/blob/db7e055c39d4e2c23cbd030f14ac8bc8329f61d8/src/utils/xcodemake.ts#L63-L80)) · high\n The `installXcodemake` function fetches a shell script from a mutable GitHub raw URL (`main` branch) and executes it without any hash or signature check, making every build that triggers auto-install vulnerable to supply-chain compromise if the upstream repo is taken over or the branch is force-pushed.\n\n#### [`src/mcp/tools/device/list_devices.ts`](https://github.com/getsentry/XcodeBuildMCP/blob/db7e055c39d4e2c23cbd030f14ac8bc8329f61d8/src/mcp/tools/device/list_devices.ts)\n\n- `BPP-Z9J` **Test sentinel '123' hardcoded into production timestamp when pathDeps.join is injected** ([L130-L133](https://github.com/getsentry/XcodeBuildMCP/blob/db7e055c39d4e2c23cbd030f14ac8bc8329f61d8/src/mcp/tools/device/list_devices.ts#L130-L133)) · low\n In `discoverDevices` (src/mcp/tools/device/list_devices.ts:130), the timestamp used for the temp JSON path is set to the string `'123'` whenever `pathDeps.join` is provided, otherwise to `Date.now()`. This couples path-join dependency injection to a fixed test sentinel that would leak into a real filesystem path (`devicectl-123.json`) if any non-test caller ever injects a `join`. In practice all production call sites at lines 303/324 pass `pathDeps` through from external callers, so the risk is latent rather than active, but the branch is a code smell: the DI seam should not alter timestamp semantics. Fix by always using `Date.now()` and only branching on `pathDeps.join` for the path composition itself.\n *Suggested fix:* Separate the timestamp from the path-join injection so `Date.now()` is always used.\n\n#### [`src/utils/logger.ts`](https://github.com/getsentry/XcodeBuildMCP/blob/db7e055c39d4e2c23cbd030f14ac8bc8329f61d8/src/utils/logger.ts)\n\n- `523-8RW` **Log file receives all messages regardless of configured log level** ([L268-L274](https://github.com/getsentry/XcodeBuildMCP/blob/db7e055c39d4e2c23cbd030f14ac8bc8329f61d8/src/utils/logger.ts#L268-L274)) · low\n The file write guard (`clientLogLevel !== 'none'`) does not apply the severity threshold, so debug messages are written to the log file even when `clientLogLevel` is set to `error`, unlike stderr which correctly gates on `shouldLog(level)`.\n *Suggested fix:* Replace the weaker file-write guard with the same `shouldLog` call used for stderr output.\n\n---\n*Generated by [Warden](https://github.com/getsentry/warden)*","author":{"url":"https://github.com/github-actions[bot]","@type":"Person","name":"github-actions[bot]"},"datePublished":"2026-06-01T07:50:41.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/436/XcodeBuildMCP/issues/436"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:bde69f5e-4587-94ef-562a-02030cc4265a |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9642:13B1D:1414FD8:1C05EAD:6A4CAE4F |
| html-safe-nonce | 177ba2c58df44523630edeb02a203cfe911e6f671410fe96aa8f61d438bcc2d9 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NjQyOjEzQjFEOjE0MTRGRDg6MUMwNUVBRDo2QTRDQUU0RiIsInZpc2l0b3JfaWQiOiIyMjAzMDAwMTM1MDU4NTAxMjAwIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | a7ba7e72fbf1fbef746f3dc8afcdd478256aadc195e3144aded19b50b14d48a2 |
| hovercard-subject-tag | issue:4561315922 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/getsentry/XcodeBuildMCP/436/issue_layout |
| twitter:image | https://opengraph.githubassets.com/8a2a654c63b9113f3ca07e9e65eb110d2cc68088a142fe410c19558cdf8e8c5d/getsentry/XcodeBuildMCP/issues/436 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/8a2a654c63b9113f3ca07e9e65eb110d2cc68088a142fe410c19558cdf8e8c5d/getsentry/XcodeBuildMCP/issues/436 |
| og:image:alt | Warden Scheduled Scan Results Run: 2026-07-06T07:35:35.389Z Commit: db7e055 Summary Severity Count High 3 Low 2 Findings src/utils/template-manager.ts MK3-624 process.chdir() race condition corrupt... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | github-actions[bot] |
| hostname | github.com |
| expected-hostname | github.com |
| None | 3d11bb817438277de2a940854450e83a7d32b6aeb5014e9e6b00a6423900251c |
| turbo-cache-control | no-preview |
| go-import | github.com/getsentry/XcodeBuildMCP git https://github.com/getsentry/XcodeBuildMCP.git |
| octolytics-dimension-user_id | 1396951 |
| octolytics-dimension-user_login | getsentry |
| octolytics-dimension-repository_id | 945551361 |
| octolytics-dimension-repository_nwo | getsentry/XcodeBuildMCP |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 945551361 |
| octolytics-dimension-repository_network_root_nwo | getsentry/XcodeBuildMCP |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | ae90d426644ca15e89bacceb72e51f4e9dbf85f7 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width