Skip to content

Fix OIDC JWKS URL allowlisting - #312

Merged
seonghobae merged 14 commits into
masterfrom
fix/oidc-jwks-url-allowlist-20260529
May 30, 2026
Merged

Fix OIDC JWKS URL allowlisting#312
seonghobae merged 14 commits into
masterfrom
fix/oidc-jwks-url-allowlist-20260529

Conversation

@seonghobae

@seonghobae seonghobae commented May 30, 2026

Copy link
Copy Markdown
Contributor

Summary

  • require OIDC issuer/JWKS URLs to use HTTPS and exact-host ALLOWED_OIDC_HOSTS allowlisting
  • reject localhost, fragments, userinfo, and non-global IP literals before JWKS preload can use OIDC URLs
  • document the Strix SSRF regression pattern in AGENTS.md

Verification

  • PYTHONDONTWRITEBYTECODE=1 python3 -m pytest backend/tests/test_config.py backend/tests/test_start_backend.py backend/tests/test_auth_real.py -q
  • PYTHONDONTWRITEBYTECODE=1 python3 -m pytest backend/tests -q
  • PYTHONDONTWRITEBYTECODE=1 python3 -m bandit -r backend/ -x backend/tests/ -q
  • git diff --check

Summary by CodeRabbit

  • Security Enhancements

    • OIDC issuer/JWKS must use HTTPS, forbid userinfo/fragments/localhost/non-global IPs, and require exact-host allowlisting before use.
    • DAV/WebDAV/CalDAV now require signed sessions, enforce owner-scoped paths/responses, reject ownerless paths, and escape XML fields.
  • New Features

    • Scan workflow defaults to an approved Vertex preview model; provider fatal/warn/denied signals (and timeouts) can fail scans closed. PR head SHA included in reports.
  • Tests

    • Added coverage for OIDC allowlisting, DAV access control, and stricter scan failure modes.

Review Change Stack

@coderabbitai

coderabbitai Bot commented May 30, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR adds HTTPS+allowlisted OIDC host validation and startup enforcement, requires per-path DAV ownership checks for WebDAV/CalDAV handlers, and tightens Strix CI/workflow and gate scripts to default an approved Vertex model and fail closed on provider-signaled infrastructure issues; tests and docs updated accordingly.

Changes

Security Hardening: OIDC, DAV, and Strix CI

Layer / File(s) Summary
URL and host validation infrastructure
backend/core/url_validation.py
New helpers: parse comma-separated allowlists, normalize hosts, require HTTPS, reject userinfo/fragments, and disallow private/localhost/non-global IP literals.
OIDC settings and validation
backend/core/config.py
Adds ALLOWED_OIDC_HOSTS to Settings and post-validate step ensuring issuer and JWKS URLs are HTTPS and host-allowlisted.
Startup/runtime settings validation
backend/scripts/start_backend.py
Startup validator enforces ALLOWED_OIDC_HOSTS presence when OIDC is configured and validates issuer/JWKS hosts, aggregating errors.
OIDC config & startup tests
backend/tests/test_config.py, backend/tests/test_start_backend.py, backend/tests/test_auth_real.py
Adds tests for missing allowlist, untrusted JWKS host, non-HTTPS issuer, private IP literals; updates test issuer URLs to HTTPS and clears runtime env in helpers.
DAV path ownership enforcement
backend/api/dav.py
DAV handler now depends on authenticated context, extracts first path segment as owner user id, and returns 403 when owner missing or mismatched.
DAV API tests
backend/tests/test_dav_api.py
Adds tests asserting 403 for ownerless DAV paths, mismatched user path vs auth, and ownerless OPTIONS without DAV capability header.
Strix workflow defaults & env
.github/workflows/strix.yml
Defaults STRIX_MODEL to exact approved Vertex preview, includes approved Vertex values in allowed-case branches, sets PR_HEAD_SHA propagation, and sets STRIX_FAIL_ON_PROVIDER_SIGNAL plus empty Vertex fallback models.
Strix quick-gate script
scripts/ci/strix_quick_gate.sh
Adds STRIX_FAIL_ON_PROVIDER_SIGNAL flag and validation, detects provider signal text as infra errors, and enforces fail-closed control flow for primary and fallback runs.
Strix gate tests
scripts/ci/test_strix_quick_gate.sh
Extends test harness for new flag and scenarios: strict-zero-findings-timeout, provider success-signal cases (fatal/warning/denied), and updated expected outcomes to fail closed.
Docs & governance
AGENTS.md, README.md, docs/plans/*, backend/tests/test_release_governance.py
Documents and updates contract text for approved Vertex model defaulting, OIDC host allowlisting, DAV ownership rules, and adjusts governance test expectations.

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs:

"🐰 I hopped through hosts and DAV lanes,
HTTPS gates and allowlist chains,
Strix bells ring, fail-closed refrains,
Tests march on in tidy trains,
Secure and snug — the rabbit remains!"

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Fix OIDC JWKS URL allowlisting' accurately reflects the main objective of the pull request, which is to implement OIDC issuer and JWKS URL allowlisting with security constraints (HTTPS enforcement, host validation, rejection of unsafe patterns).
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/oidc-jwks-url-allowlist-20260529

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented May 30, 2026

Copy link
Copy Markdown
Contributor

PR governance metadata gate is not ready for 24cc2a5b986b85364c4634127c9b662247d69e41:

  • Current-head CodeRabbit review comment has blocking warning/failure evidence on 24cc2a5.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented May 30, 2026

Copy link
Copy Markdown
Contributor
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@backend/api/dav.py`:
- Around line 21-28: The _ensure_dav_owner_scope function currently allows
ownerless DAV paths; change its logic to "fail closed" by rejecting when
_dav_path_owner_user_id(path) returns None (raise HTTPException 403) and only
allow when owner_user_id == auth_context.user_id; update the function so the
only early return is when the owner matches the auth_context, and otherwise
raise 403. Ensure you locate and update the _ensure_dav_owner_scope function and
its use of _dav_path_owner_user_id and AuthContext so ownerless paths are
rejected before any OPTIONS/PROPFIND/capability responses are generated (and
keep path values separate from any log/response display per guidelines).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ba25d6d0-c0d1-4959-830c-363b2621a1e7

📥 Commits

Reviewing files that changed from the base of the PR and between 4813041 and 3d145d1.

📒 Files selected for processing (9)
  • AGENTS.md
  • backend/api/dav.py
  • backend/core/config.py
  • backend/core/url_validation.py
  • backend/scripts/start_backend.py
  • backend/tests/test_auth_real.py
  • backend/tests/test_config.py
  • backend/tests/test_dav_api.py
  • backend/tests/test_start_backend.py

Comment thread backend/api/dav.py

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
scripts/ci/strix_quick_gate.sh (1)

2319-2321: 💤 Low value

Minor: redundant case variants with -i flag.

The -i flag makes matching case-insensitive, so Fatal|FATAL, Denied|DENIED, Warn|WARN|Warning|WARNING can be simplified to Fatal|Denied|Warn|Warning. Not a bug, just slightly verbose.

Simplification (optional)
-	if grep -Eiq '(^|[^[:alpha:]])(Fatal|FATAL|Denied|DENIED|Warn|WARN|Warning|WARNING)([^[:alpha:]]|$)' "$STRIX_LOG"; then
+	if grep -Eiq '(^|[^[:alpha:]])(Fatal|Denied|Warn|Warning)([^[:alpha:]]|$)' "$STRIX_LOG"; then
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/ci/strix_quick_gate.sh` around lines 2319 - 2321, The grep call using
-i is case-insensitive, so simplify the alternation pattern in the grep
invocation (the line that checks "$STRIX_LOG") by removing duplicate
uppercase/lowercase variants; update the pattern from
'Fatal|FATAL|Denied|DENIED|Warn|WARN|Warning|WARNING' to just
'Fatal|Denied|Warn|Warning' while keeping the surrounding anchors
'(^|[^[:alpha:]])' and '([^[:alpha:]]|$)' and the -Eiq flags unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/ci/test_strix_quick_gate.sh`:
- Line 269: The variable fail_on_provider_signal is currently defaulting to 0
which makes tests permissive; change its default to fail-closed by setting local
fail_on_provider_signal="${29-1}" (instead of "${29-0}") so callers that omit
arg 29 will enforce provider signals; keep the existing export of
fail_on_provider_signal intact so downstream code still sees the value.

---

Nitpick comments:
In `@scripts/ci/strix_quick_gate.sh`:
- Around line 2319-2321: The grep call using -i is case-insensitive, so simplify
the alternation pattern in the grep invocation (the line that checks
"$STRIX_LOG") by removing duplicate uppercase/lowercase variants; update the
pattern from 'Fatal|FATAL|Denied|DENIED|Warn|WARN|Warning|WARNING' to just
'Fatal|Denied|Warn|Warning' while keeping the surrounding anchors
'(^|[^[:alpha:]])' and '([^[:alpha:]]|$)' and the -Eiq flags unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 50eb3090-1540-4e3a-8451-ea54754ee541

📥 Commits

Reviewing files that changed from the base of the PR and between 3d145d1 and f62e5e8.

📒 Files selected for processing (9)
  • .github/workflows/strix.yml
  • AGENTS.md
  • README.md
  • backend/api/dav.py
  • backend/tests/test_dav_api.py
  • backend/tests/test_release_governance.py
  • docs/plans/2026-05-29-strix-full-scan-operational-model.md
  • scripts/ci/strix_quick_gate.sh
  • scripts/ci/test_strix_quick_gate.sh
🚧 Files skipped from review as they are similar to previous changes (1)
  • backend/api/dav.py

Comment thread scripts/ci/test_strix_quick_gate.sh Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
scripts/ci/test_strix_quick_gate.sh (1)

5040-5128: ⚡ Quick win

Cover the disabled provider-signal branch too.

These new cases only prove STRIX_FAIL_ON_PROVIDER_SIGNAL=1. None of the run_gate_case_allow_provider_signal callers hit the success-path detector (Fatal/Warning/Denied on exit 0), so the flag could be ignored or hardcoded and this file would still pass. Please add one run_gate_case_allow_provider_signal case for one of these scenarios so the new toggle is verified in both directions.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/ci/test_strix_quick_gate.sh` around lines 5040 - 5128, Add a
complementary test that exercises the "allow provider signal" path by adding a
run_gate_case_allow_provider_signal invocation for one of the existing scenarios
(e.g., duplicate the parameters used in the "provider-fatal-success-signal"
run_gate_case but call run_gate_case_allow_provider_signal instead), so the
opposite branch of STRIX_FAIL_ON_PROVIDER_SIGNAL is exercised; ensure the new
call uses the same identifying scenario name (like
"provider-fatal-success-signal") and identical arguments except for using
run_gate_case_allow_provider_signal to verify the disabled provider-signal
behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@scripts/ci/test_strix_quick_gate.sh`:
- Around line 5040-5128: Add a complementary test that exercises the "allow
provider signal" path by adding a run_gate_case_allow_provider_signal invocation
for one of the existing scenarios (e.g., duplicate the parameters used in the
"provider-fatal-success-signal" run_gate_case but call
run_gate_case_allow_provider_signal instead), so the opposite branch of
STRIX_FAIL_ON_PROVIDER_SIGNAL is exercised; ensure the new call uses the same
identifying scenario name (like "provider-fatal-success-signal") and identical
arguments except for using run_gate_case_allow_provider_signal to verify the
disabled provider-signal behavior.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 76267a47-a6d2-4270-8537-7f798b7c3647

📥 Commits

Reviewing files that changed from the base of the PR and between f62e5e8 and 35edd5f.

📒 Files selected for processing (2)
  • scripts/ci/strix_quick_gate.sh
  • scripts/ci/test_strix_quick_gate.sh

coderabbitai[bot]
coderabbitai Bot previously approved these changes May 30, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/strix.yml (1)

256-257: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Restore the Vertex fallback path until the new provider contract is proven.

Clearing STRIX_VERTEX_FALLBACK_MODELS here removes the same-provider fallback and turns preview-model blips into hard workflow failures. I don't see PR evidence that the default preview model now has the exact clean contract required to run without that fallback in governed CI, so this conflicts with the repo workflow policy.

Suggested patch
-          STRIX_VERTEX_FALLBACK_MODELS: ""
+          STRIX_VERTEX_FALLBACK_MODELS: "vertex_ai/gemini-2.5-flash"

As per coding guidelines: "Do not disable silent Vertex fallback models in the workflow unless a future PR proves a new exact fallback contract with no Timeout/Fatal/Warn/Denied output"

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/strix.yml around lines 256 - 257, The workflow currently
clears STRIX_VERTEX_FALLBACK_MODELS which disables the same-provider Vertex
fallback and can turn preview-model blips into hard failures; restore the
fallback by removing the empty assignment or resetting
STRIX_VERTEX_FALLBACK_MODELS back to its prior/default fallback value (i.e.,
preserve the preview-model fallback token/list) so the same-provider fallback
remains enabled until a future PR proves the new provider contract; keep
STRIX_FAIL_ON_PROVIDER_SIGNAL unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In @.github/workflows/strix.yml:
- Around line 256-257: The workflow currently clears
STRIX_VERTEX_FALLBACK_MODELS which disables the same-provider Vertex fallback
and can turn preview-model blips into hard failures; restore the fallback by
removing the empty assignment or resetting STRIX_VERTEX_FALLBACK_MODELS back to
its prior/default fallback value (i.e., preserve the preview-model fallback
token/list) so the same-provider fallback remains enabled until a future PR
proves the new provider contract; keep STRIX_FAIL_ON_PROVIDER_SIGNAL unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 93f2deee-cc1f-4be6-9f1c-44121a93ad3d

📥 Commits

Reviewing files that changed from the base of the PR and between 35edd5f and edb3a56.

📒 Files selected for processing (2)
  • .github/workflows/strix.yml
  • scripts/ci/test_strix_quick_gate.sh

coderabbitai[bot]
coderabbitai Bot previously approved these changes May 30, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes May 30, 2026
@seonghobae

Copy link
Copy Markdown
Contributor Author
2026-05-30T13:56:02.077667599Z ==> Cloning from https://github.com/Seongho-Bae/naruon
2026-05-30T13:56:04.025397318Z ==> Checking out commit 692e2cc210cec9aacfa3cc9c88989381dfec5512 in branch fix/oidc-jwks-url-allowlist-20260529
2026-05-30T13:56:05.197677628Z #1 [internal] load build definition from Dockerfile
2026-05-30T13:56:05.197714379Z #1 DONE 0.0s
2026-05-30T13:56:05.371849756Z 
2026-05-30T13:56:05.371873476Z #1 [internal] load build definition from Dockerfile
2026-05-30T13:56:05.371877296Z #1 transferring dockerfile: 718B done
2026-05-30T13:56:05.371879947Z #1 DONE 0.0s
2026-05-30T13:56:05.371882307Z 
2026-05-30T13:56:05.371885487Z #2 [internal] load metadata for docker.io/library/python:3.11-slim
2026-05-30T13:56:06.588879072Z #2 ...
2026-05-30T13:56:06.588898982Z 
2026-05-30T13:56:06.588903222Z #3 [auth] library/python:pull render-prod/docker-mirror-repository/library/python:pull token for us-west1-docker.pkg.dev
2026-05-30T13:56:06.588907192Z #3 DONE 0.0s
2026-05-30T13:56:06.739081559Z 
2026-05-30T13:56:06.739105049Z #2 [internal] load metadata for docker.io/library/python:3.11-slim
2026-05-30T13:56:11.149262354Z #2 DONE 5.9s
2026-05-30T13:56:11.274158449Z 
2026-05-30T13:56:11.274178129Z #4 [internal] load .dockerignore
2026-05-30T13:56:11.274183489Z #4 transferring context: 228B done
2026-05-30T13:56:11.27418757Z #4 DONE 0.0s
2026-05-30T13:56:11.27419136Z 
2026-05-30T13:56:11.27419544Z #5 [internal] load build context
2026-05-30T13:56:11.2741997Z #5 DONE 0.0s
2026-05-30T13:56:11.27420334Z 
2026-05-30T13:56:11.27420774Z #6 [1/7] FROM docker.io/library/python:3.11-slim@sha256:a3ab0b966bc4e91546a033e22093cb840908979487a9fc0e6e38295747e49ac0
2026-05-30T13:56:11.27421163Z #6 resolve docker.io/library/python:3.11-slim@sha256:a3ab0b966bc4e91546a033e22093cb840908979487a9fc0e6e38295747e49ac0 0.0s done
2026-05-30T13:56:11.27421556Z #6 DONE 0.0s
2026-05-30T13:56:11.27421919Z 
2026-05-30T13:56:11.274225261Z #7 importing cache manifest from image-registry-v2.aws-ap-southeast-1-2.internal.render.com/srv-d8d2juf7f7vs73e352og:buildcache
2026-05-30T13:56:11.274229681Z #7 inferred cache manifest type: application/vnd.oci.image.manifest.v1+json done
2026-05-30T13:56:11.274233491Z #7 DONE 0.1s
2026-05-30T13:56:11.48413124Z 
2026-05-30T13:56:11.48416369Z #5 [internal] load build context
2026-05-30T13:56:11.484169121Z #5 transferring context: 914.10kB 0.0s done
2026-05-30T13:56:11.484173031Z #5 DONE 0.1s
2026-05-30T13:56:11.484176741Z 
2026-05-30T13:56:11.484181111Z #8 [2/7] WORKDIR /app
2026-05-30T13:56:11.484185021Z #8 CACHED
2026-05-30T13:56:11.484188591Z 
2026-05-30T13:56:11.484193891Z #9 [3/7] RUN apt-get update     && apt-get install -y --no-install-recommends gcc libpq-dev     && rm -rf /var/lib/apt/lists/*
2026-05-30T13:56:11.484200001Z #9 CACHED
2026-05-30T13:56:11.484205662Z 
2026-05-30T13:56:11.484212492Z #10 [4/7] COPY backend/requirements.txt /app/requirements.txt
2026-05-30T13:56:11.484218802Z #10 CACHED
2026-05-30T13:56:11.484224372Z 
2026-05-30T13:56:11.484230562Z #11 [5/7] RUN PIP_ROOT_USER_ACTION=ignore PIP_DISABLE_PIP_VERSION_CHECK=1     pip install --no-cache-dir -r requirements.txt
2026-05-30T13:56:11.484235522Z #11 CACHED
2026-05-30T13:56:11.484239082Z 
2026-05-30T13:56:11.484243523Z #12 [6/7] COPY backend /app/
2026-05-30T13:56:11.484247263Z #12 CACHED
2026-05-30T13:56:11.484250863Z 
2026-05-30T13:56:11.484254523Z #13 [7/7] RUN adduser --disabled-password --gecos "" appuser
2026-05-30T13:56:11.716118905Z #13 CACHED
2026-05-30T13:56:11.908144928Z 
2026-05-30T13:56:11.908166009Z #14 exporting to image
2026-05-30T13:56:11.908171199Z #14 exporting layers done
2026-05-30T13:56:11.908175719Z #14 exporting manifest sha256:53d51c08c66812e7038205a8814d9488a1afede9e8c555c71e1494a6508dfd2d 0.0s done
2026-05-30T13:56:11.908179669Z #14 exporting config sha256:69b25934a505c700c9b0af5c6b4338c307d0dac15e2d95af07d964726b3b8663 0.0s done
2026-05-30T13:56:11.90819362Z #14 pushing layers 0.1s done
2026-05-30T13:56:11.908196989Z #14 pushing manifest for image-registry-v2.aws-ap-southeast-1-2.internal.render.com/srv-d8d2juf7f7vs73e352og:bld-d8deorjrjlhs73b8mdmg@sha256:53d51c08c66812e7038205a8814d9488a1afede9e8c555c71e1494a6508dfd2d
2026-05-30T13:56:12.019869149Z #14 pushing manifest for image-registry-v2.aws-ap-southeast-1-2.internal.render.com/srv-d8d2juf7f7vs73e352og:bld-d8deorjrjlhs73b8mdmg@sha256:53d51c08c66812e7038205a8814d9488a1afede9e8c555c71e1494a6508dfd2d 0.0s done
2026-05-30T13:56:12.01988794Z #14 DONE 0.2s
2026-05-30T13:56:12.01989113Z 
2026-05-30T13:56:12.01989404Z #15 exporting cache to registry
2026-05-30T13:56:12.01989681Z #15 sending cache export
2026-05-30T13:56:12.191925557Z #15 sending cache export 0.2s done
2026-05-30T13:56:12.191943167Z #15 writing cache image manifest sha256:714c1b8ed49e36325432240f5a6195df3ce00f5a01fd618a22995cbb704b3412 0.1s done
2026-05-30T13:56:12.191948647Z #15 DONE 0.4s
2026-05-30T13:56:17.368480119Z ==> Deploying...
2026-05-30T13:56:17.581709059Z ==> Setting WEB_CONCURRENCY=1 by default, based on available CPUs in the instance
2026-05-30T13:56:24.303887378Z Startup configuration error:
2026-05-30T13:56:24.30392494Z - Missing required runtime settings: DATABASE_URL, AUTH_SESSION_HMAC_SECRET. Set them in the container environment, Docker Compose env file, or one of: /home/appuser/.env, ../.env, .env.
2026-05-30T13:56:29.38137846Z ==> Exited with status 78
2026-05-30T13:56:29.383901915Z ==> Common ways to troubleshoot your deploy: https://render.com/docs/troubleshooting-deploys
2026-05-30T13:56:29.507624154Z Startup configuration error:
2026-05-30T13:56:29.507686518Z - Missing required runtime settings: DATABASE_URL, AUTH_SESSION_HMAC_SECRET. Set them in the container environment, Docker Compose env file, or one of: /home/appuser/.env, ../.env, .env.

@seonghobae
seonghobae temporarily deployed to fix/oidc-jwks-url-allowlist-20260529 - naruon PR #312 May 30, 2026 16:08 — with Render Destroyed
@seonghobae
seonghobae merged commit 10d9cc3 into master May 30, 2026
15 of 17 checks passed
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