Voorstel: default read én write op "allow" voor alles #69

Open
opened 2026-06-27 14:54:23 +00:00 by Latte · 0 comments
Owner

Voorstel

Zet de standaard-policy zo dat zowel read als write standaard op allow staan voor alles, in plaats van de huidige secure-default (read: allow, write: deny).

Huidige situatie

In src/aegis_gitea_mcp/policy.py is de default:

@dataclass(frozen=True)
class PolicyConfig:
    default_read: str = "allow"
    default_write: str = "deny"

En wanneer er geen policy.yaml aanwezig is, valt de engine terug op deze secure default (from_yaml_fileif not policy_path.exists(): return cls(PolicyConfig())). Daardoor zijn writes out-of-the-box geblokkeerd, ook met WRITE_MODE=true, tenzij je expliciet een policy-bestand met defaults.write: allow meegeeft.

Gewenst gedrag

defaults.read: allow en defaults.write: allow als standaard, zodat writes werken zonder dat er een apart policy-bestand nodig is (wel nog steeds achter WRITE_MODE + repository-whitelist / WRITE_ALLOW_ALL_TOKEN_REPOS).

Aandachtspunten

  • Dit verlaat het "secure by default"-uitgangspunt van Aegis — write zou dan alleen nog door WRITE_MODE en de whitelist begrensd worden, niet meer door de policy-laag.
  • De admin/credential-denylist (/admin, tokens, secrets, hooks, keys, oauth2, runner-registratie) blijft hoe dan ook gehandhaafd in de handler, los van deze default.
  • Overweeg of dit een opt-in env-var moet worden (bv. DEFAULT_WRITE_ALLOW=true) in plaats van het wijzigen van de hardcoded default, zodat bestaande deployments niet ongemerkt opener worden na een upgrade.

Aangemaakt via de aegis-gitea MCP.

## Voorstel Zet de standaard-policy zo dat zowel **read als write** standaard op `allow` staan voor alles, in plaats van de huidige secure-default (`read: allow`, `write: deny`). ## Huidige situatie In `src/aegis_gitea_mcp/policy.py` is de default: ```python @dataclass(frozen=True) class PolicyConfig: default_read: str = "allow" default_write: str = "deny" ``` En wanneer er geen `policy.yaml` aanwezig is, valt de engine terug op deze secure default (`from_yaml_file` → `if not policy_path.exists(): return cls(PolicyConfig())`). Daardoor zijn writes out-of-the-box geblokkeerd, ook met `WRITE_MODE=true`, tenzij je expliciet een policy-bestand met `defaults.write: allow` meegeeft. ## Gewenst gedrag `defaults.read: allow` en `defaults.write: allow` als standaard, zodat writes werken zonder dat er een apart policy-bestand nodig is (wel nog steeds achter `WRITE_MODE` + repository-whitelist / `WRITE_ALLOW_ALL_TOKEN_REPOS`). ## Aandachtspunten - Dit verlaat het "secure by default"-uitgangspunt van Aegis — write zou dan alleen nog door `WRITE_MODE` en de whitelist begrensd worden, niet meer door de policy-laag. - De admin/credential-denylist (`/admin`, tokens, secrets, hooks, keys, oauth2, runner-registratie) blijft hoe dan ook gehandhaafd in de handler, los van deze default. - Overweeg of dit een opt-in env-var moet worden (bv. `DEFAULT_WRITE_ALLOW=true`) in plaats van het wijzigen van de hardcoded default, zodat bestaande deployments niet ongemerkt opener worden na een upgrade. _Aangemaakt via de aegis-gitea MCP._
Latte added the Kind/EnhancementKind/SecurityPriority/Medium labels 2026-06-27 14:54:57 +00:00
Sign in to join this conversation.