Skip to content

ci: refresh github/codeql-action pin to current v4 - #986

Merged
ZohaibHassan16 merged 1 commit into
mainfrom
ci/refresh-codeql-action-pin
Aug 14, 2026
Merged

ci: refresh github/codeql-action pin to current v4#986
ZohaibHassan16 merged 1 commit into
mainfrom
ci/refresh-codeql-action-pin

Conversation

@ZohaibHassan16

@ZohaibHassan16 ZohaibHassan16 commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

Summary

The github/codeql-action SHA in codeql.yml and defender-for-devops.yml was out of date compared to what the v4 tag points to now.

Because of that, the Verify Action Pins workflow was failing on PRs that changed workflow files, even when the workflow change was unrelated. This also showed up recently on #945.

  • Old SHA: 5595ccaf912efad79be6eef63a5619ff05969be3
  • Current v4 SHA: ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd

Changes

  • Updated all 8 github/codeql-action/* references to the current v4 SHA.
  • 6 references were in codeql.yml.
  • 2 references were in defender-for-devops.yml.
  • Kept the comments as # v4.

Test plan

  • Checked the SHA using the GitHub API (repos/github/codeql-action/git/refs/tags/v4 → tag object → object.sha) instead of only using the SHA from the CI error.
  • Ran .github/scripts/verify-action-pins.sh locally.
  • All 40/40 action references passed and the script exited with code 0.

The pin was 5595ccaf..., but upstream has since moved the v4 tag to
ff2f1c62.... The Verify Action Pins workflow flags this drift on every
PR that touches any workflow file, regardless of whether that PR
changed codeql.yml or defender-for-devops.yml.

Verified the new SHA against the GitHub API directly (not just the CI
error text) and confirmed .github/scripts/verify-action-pins.sh passes
clean locally (40/40 action references OK, exit 0).
@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

CI: refresh pinned github/codeql-action v4 SHA in security workflows

🐞 Bug fix ⚙️ Configuration changes 🕐 Less than 10 minutes

Grey Divider

AI Description

• Update pinned github/codeql-action v4 SHA to match upstream v4 tag.
• Fix Verify Action Pins failures triggered by unrelated workflow edits.
• Keep existing v4 comments while refreshing all CodeQL action references.
Diagram

graph TD
  A["codeql.yml"] --> B{{"github/codeql-action"}} --> C["Pinned v4 SHA"]
  D["defender-for-devops.yml"] --> B --> C
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Reference v4 tag directly (no SHA pin)
  • ➕ No drift between workflow and upstream tag
  • ➕ Less maintenance overhead
  • ➖ Defeats pinning policy and will likely fail Verify Action Pins
  • ➖ Increases supply-chain risk vs immutable pins
2. Automate pin refresh via Dependabot (github-actions)
  • ➕ Keeps action SHAs aligned automatically with upstream releases/tags
  • ➕ Reduces CI noise and manual updates
  • ➖ More frequent small PRs to review/merge
  • ➖ May need configuration to align with pin-verification expectations

Recommendation: The current approach (refreshing the pinned SHA while keeping the v4 comment) is the correct fix given the repository’s pin-verification policy. Consider adding Dependabot github-actions updates to reduce future pin drift and prevent recurring Verify Action Pins failures.

Files changed (2) +8 / -8

Other (2) +8 / -8
codeql.ymlRefresh CodeQL action pins to current v4 SHA +6/-6

Refresh CodeQL action pins to current v4 SHA

• Updates all github/codeql-action steps (init/autobuild/analyze/upload-sarif) to the current commit that the upstream v4 tag resolves to. This prevents action-pin verification failures when workflow files change.

.github/workflows/codeql.yml

defender-for-devops.ymlRefresh upload-sarif action pin used by Defender workflow +2/-2

Refresh upload-sarif action pin used by Defender workflow

• Updates the github/codeql-action/upload-sarif references to the current v4 SHA for SARIF uploads. Aligns the workflow with the repo’s pinned-action verification checks.

.github/workflows/defender-for-devops.yml

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Tip of the day
💡 Did you know, you can describe a rule in plain language on the Rules page and Qodo drafts it for you

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@ZohaibHassan16
ZohaibHassan16 merged commit 42afc06 into main Aug 14, 2026
15 checks passed
@github-actions

Copy link
Copy Markdown

🔒 Security Scan Results

Safety — dependency vulnerabilities

✅ No findings.

Bandit — HIGH-severity code issues

✅ No findings.

Semgrep — static analysis patterns

Found 55.

Show all findings
  • python.lang.security.audit.non-literal-import.non-literal-import in semantica/__init__.py:58
  • python.lang.security.audit.dynamic-urllib-use-detected.dynamic-urllib-use-detected in semantica/cli.py:735
  • python.lang.security.audit.insecure-file-permissions.insecure-file-permissions in semantica/cli.py:3868
  • python.lang.security.audit.insecure-file-permissions.insecure-file-permissions in semantica/cli.py:4002
  • python.lang.security.audit.non-literal-import.non-literal-import in semantica/ingest/__init__.py:271
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/ingest/databricks_ingestor.py:506
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/ingest/databricks_ingestor.py:506
  • python.sqlalchemy.security.audit.avoid-sqlalchemy-text.avoid-sqlalchemy-text in semantica/ingest/db_ingestor.py:310
  • python.sqlalchemy.security.audit.avoid-sqlalchemy-text.avoid-sqlalchemy-text in semantica/ingest/db_ingestor.py:331
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/ingest/duckdb_ingestor.py:99
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/ingest/duckdb_ingestor.py:99
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/ingest/duckdb_ingestor.py:165
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/ingest/duckdb_ingestor.py:165
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/ingest/duckdb_ingestor.py:242
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/ingest/duckdb_ingestor.py:242
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/ingest/duckdb_ingestor.py:342
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/ingest/duckdb_ingestor.py:342
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/ingest/snowflake_ingestor.py:542
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/ingest/snowflake_ingestor.py:732
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/ingest/snowflake_ingestor.py:732
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/ingest/snowflake_ingestor.py:748
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/ingest/snowflake_ingestor.py:748
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/ingest/snowflake_ingestor.py:813
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/ingest/snowflake_ingestor.py:813
  • python.lang.security.audit.hardcoded-password-default-argument.hardcoded-password-default-argument in semantica/kg/graph_builder.py:1181
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/provenance/storage.py:506
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/provenance/storage.py:506
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/provenance/storage.py:509
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/provenance/storage.py:509
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/provenance/storage.py:512
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/provenance/storage.py:512
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/provenance/storage.py:513
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/provenance/storage.py:513
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/provenance/storage.py:575
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/provenance/storage.py:575
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/provenance/storage.py:828
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/provenance/storage.py:927
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/provenance/storage.py:950
  • python.lang.security.audit.non-literal-import.non-literal-import in semantica/semantic_extract/__init__.py:137
  • python.lang.security.audit.non-literal-import.non-literal-import in semantica/utils/helpers.py:508
  • python.lang.security.audit.non-literal-import.non-literal-import in semantica/utils/helpers.py:510
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/vector_store/pgvector_store.py:498
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/vector_store/pgvector_store.py:579
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/vector_store/pgvector_store.py:618
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/vector_store/pgvector_store.py:752
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/vector_store/pgvector_store.py:900
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/vector_store/pgvector_store.py:927
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/vector_store/sqlite_vec_store.py:240
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/vector_store/sqlite_vec_store.py:240
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/vector_store/sqlite_vec_store.py:311
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/vector_store/sqlite_vec_store.py:402
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/vector_store/sqlite_vec_store.py:454
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/vector_store/sqlite_vec_store.py:689
  • python.lang.security.audit.formatted-sql-query.formatted-sql-query in semantica/vector_store/sqlite_vec_store.py:732
  • python.sqlalchemy.security.sqlalchemy-execute-raw-query.sqlalchemy-execute-raw-query in semantica/vector_store/sqlite_vec_store.py:732

This security scan runs automatically on source-code PRs and bi-weekly (skipped for doc/markdown-only changes).

📊 Security Policy: CI fails on Safety vulnerabilities and Bandit HIGH-severity findings. Semgrep findings above are informational and do not block merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant