diff --git a/pmoves/services/cast-tts-gateway/auth.py b/pmoves/services/cast-tts-gateway/auth.py index a31c86ad78..91d1614d25 100644 --- a/pmoves/services/cast-tts-gateway/auth.py +++ b/pmoves/services/cast-tts-gateway/auth.py @@ -4,12 +4,15 @@ with optional development mode bypass for local testing. """ +import logging import os from typing import Callable, Awaitable from aiohttp import web import jose.jwt +logger = logging.getLogger(__name__) + async def get_user_context(request: web.Request) -> dict: """ @@ -34,9 +37,10 @@ async def get_user_context(request: web.Request) -> dict: # Allow unauthenticated requests in development mode if os.getenv("CAST_AUTH_REQUIRED", "true") == "false": + logger.warning("SECURITY: CAST_AUTH_REQUIRED=false — authentication bypassed (dev mode)") return { "user_id": "dev_user", - "role": "admin", + "role": "dev", "email": "dev@pmoves.ai" } diff --git a/pmoves/services/consciousness-service/Dockerfile b/pmoves/services/consciousness-service/Dockerfile index f94ea21352..f9ef2a0d22 100644 --- a/pmoves/services/consciousness-service/Dockerfile +++ b/pmoves/services/consciousness-service/Dockerfile @@ -31,7 +31,7 @@ USER pmoves ENV SERVICE_NAME=consciousness-service ENV SERVICE_PORT=8105 ENV NATS_URL=nats://nats:pmoves@nats:4222 -ENV CHIT_PROD_PASSPHRASE=pmoves-chit-default +# CHIT_PROD_PASSPHRASE injected at runtime via docker-compose ENV SUPABASE_URL=http://supabase-kong:8000 ENV PYTHONUNBUFFERED=1 diff --git a/pmoves/services/consciousness-service/main.py b/pmoves/services/consciousness-service/main.py index 094a772327..f097ca8193 100644 --- a/pmoves/services/consciousness-service/main.py +++ b/pmoves/services/consciousness-service/main.py @@ -37,7 +37,9 @@ SERVICE_NAME = os.environ.get("SERVICE_NAME", "consciousness-service") SERVICE_PORT = int(os.environ.get("SERVICE_PORT", "8105")) NATS_URL = os.environ.get("NATS_URL", "nats://nats:pmoves@nats:4222") -CHIT_PASSPHRASE = os.environ.get("CHIT_PROD_PASSPHRASE", "pmoves-chit-default") +CHIT_PASSPHRASE = os.environ.get("CHIT_PROD_PASSPHRASE", "") +if not CHIT_PASSPHRASE: + logger.warning("CHIT_PROD_PASSPHRASE not set — CGP signing disabled") SUPABASE_URL = os.environ.get("SUPABASE_URL", "http://supabase-kong:8000") SUPABASE_ANON_KEY = os.environ.get("SUPABASE_ANON_KEY", "") diff --git a/pmoves/services/flute-gateway/main.py b/pmoves/services/flute-gateway/main.py index 32546f4964..e6b4ec02b6 100644 --- a/pmoves/services/flute-gateway/main.py +++ b/pmoves/services/flute-gateway/main.py @@ -98,6 +98,7 @@ def _build_nats_url() -> str: return f"nats://{user}:{password}@{host}:{port}" if user: return f"nats://{user}@{host}:{port}" + logger.warning("NATS connection without credentials — set NATS_URL or NATS_USER/NATS_PASSWORD") return f"nats://{host}:{port}" diff --git a/pmoves/ui/app/api/audit/summary/route.ts b/pmoves/ui/app/api/audit/summary/route.ts index 68053a0a23..213646d92d 100644 --- a/pmoves/ui/app/api/audit/summary/route.ts +++ b/pmoves/ui/app/api/audit/summary/route.ts @@ -350,7 +350,6 @@ export async function GET(request: NextRequest) { return NextResponse.json( { generatedAt: new Date().toISOString(), - docsRoot, warnings, productionAudit: { source: dashboardMarkdown ? dashboardPath : null,