You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
The new API routes lack authentication and authorization, allowing anyone who can reach the server to read private hub configuration and create branches and PRs using the app’s installation credentials.
The import endpoint deliberately returns HTTP 200 with { ok: false, error, results: [] } for failures such as a missing hub installation. This code treats that response as success and sets retrieveResults to an empty array, which also suppresses the message/error branch in the render. Check json.ok before processing results and throw the returned error so the user sees why the import failed.
Folder controls are inaccessible to keyboard users
Unlike the file entries, folder entries are mouse-only divs: they cannot receive keyboard focus or be activated with Enter/Space. After navigating into a folder or opening a file, keyboard users cannot use the tree to return to a parent or expand sibling folders. Render this control as a native button and expose its expanded state.
The wildcard is normalized without checking that it stays inside CONFIG_PATH: /content/..%2F.env resolves outside .github to the repository-root .env file. This lets callers read files outside the endpoint's documented configuration scope using the hub installation's credentials. Reject paths that escape CONFIG_PATH before making GitHub content requests.
Skip syntax reads for deleted hub YAML files
index.js:917
Deleting a hub YAML file makes validation fail because validateAndReportHubSync fetches every changed filename at the PR head and treats the deleted file's 404 as a syntax error. Preserve file statuses when passing changes to the validator, and skip syntax reads for removed paths while handling deletion semantics separately.
Pass the parent environment's prefix into the UI build
ui/next.config.js:8
Following the documented workflow of setting the prefix in the repository's .env and then running cd ui && npm run build does not supply that value here: Next.js loads environment files from the UI project directory, not the parent directory. The UI is then exported for /safe-settings while the backend reads the root .env and mounts a different prefix. Load the parent environment explicitly or pass the prefix into the UI build environment so both layers use the same setting.
Stringify boolean values before rendering settings
ui/src/app/components/EnvVariables.jsx:132
The environment API returns CREATE_DEFAULT_BRANCH and FULL_SYNC_NOP as booleans. maskedValue() returns those values unchanged, but React renders both true and false as empty children, so their settings appear blank in this reporting page. Please stringify non-null values before rendering them.
Include all emitted log levels in the filter
ui/src/app/dashboard/logs/page.jsx:11
The file logger also emits FATAL, TRACE and NOTICE, and the backend uses UNKNOWN for unparsed lines such as stack-trace continuations. Because the level filter always runs and this list is also the only set of selectable levels, those entries can never be displayed—even with every checkbox selected. Please include the supported levels so fatal errors and diagnostic continuations remain accessible.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Unauthenticated dashboard APIs expose private data and privileged installation actions, while the UI ESLint configuration also breaks root lint and test runs.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Unauthenticated dashboard APIs expose private Hub data and privileged import operations, while an early return can bypass validation of ordinary configuration changes.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Unauthenticated dashboard APIs expose private configuration and privileged import operations, while synchronization can use stale configuration and mixed-change PRs can bypass ordinary validation.
Updated deployment instructions and UI rebuild notes. Changed header to button for better accessibility.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Critical issues expose private Hub data and write operations to unauthenticated callers, allow mixed-change PRs to bypass settings validation, and risk reverting newer policy by delivering configuration from stale PR heads.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
Unauthenticated dashboard APIs expose private Hub data and allow imports using app credentials, while mixed Hub/admin changes can bypass required configuration validation.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.