Skip to content

OM-17/15: Google Workspace plugin manifest needs format validation, German labels, and prerequisites on the card #602

Description

@Weegy

Follow-up from the first customer test report (PR #599). Findings OM-17 (high) and OM-15. Cross-repo: the fix does not live in byte5ai/omadia.

What happened

The tester installed the Google Workspace plugin, saw an email field with a masked field directly beneath it, and entered their work email address and their actual Google account password. The system accepted both silently and confirmed "gespeichert". The fields meant gw_sa_client_email and gw_sa_private_key — two values out of a Google Cloud service-account JSON key file.

Their own words:

"Ich arbeite seit Monaten täglich mit KI-Werkzeugen und Systemkonfiguration. Wenn ich an dieser Stelle ein Login sehe, dann ist das kein Anwenderfehler."

They are right. omadia never asks for a Google password; the documented path is correct and secure. This is purely a design failure. The tester removed the values the same evening and rotated the account password.

What PR #599 already shipped (platform half, benefits every plugin)

  • A standing caution under every type: secret input: "Hier gehört kein Konto-Passwort hinein." Manifest-independent — this alone would have prevented the finding.
  • pattern + pattern_hint (localised) in the manifest schema, parsed by manifestLoader, enforced server-side in every write pathPATCH /v1/admin/runtime/installed/:id/secrets previously validated only the shape, never the value.
  • Patterns are anchored to match HTML pattern= semantics, screened by an allowlist grammar at load, and every match runs in a worker under a 50 ms budget (manifests are untrusted input).
  • The manifest placeholder is finally honoured — it was parsed and then discarded by both renderers.

What is still needed — and where

The Google Workspace plugin manifest is in neither this repo nor omadia-byte5-plugins. Greps for gw_sa_client_email / gw_sa_private_key return nothing in either tree; the plugin is published separately via hub.omadia.ai. Locate that repo first — that is task zero.

Then, in the plugin manifest:

  1. pattern + pattern_hint on both fields:
    • gw_sa_client_email → expects …@….iam.gserviceaccount.com
    • gw_sa_private_key → expects a PEM block starting with -----BEGIN PRIVATE KEY-----
  2. German label and help for every setup field. Today the "Beschreibung" section is entirely English while the instructions directly below it are German — two languages on one page. Note the schema asymmetry: setup_guide is already LocalizedMarkdown, but label / help / description are plain strings (see the linked platform issue).
  3. OM-15 — prerequisites on the card, before install. Setup requires a Google Cloud service account with domain-wide delegation, seven individual APIs enabled, splitting a JSON key file, and super-admin rights in the Workspace admin console. The tester's reaction on reading it: "Auch wenn die Beschreibung nicht danach klingt, als würde ich es hinbekommen." — and they only found out after installing. Mark it on the tile: "Einrichtung durch IT-Administrator · ca. 15 Min · Google-Workspace-Super-Admin erforderlich". This needs a new manifest block plus hub republication.
  4. A benefit-oriented opening sentence in plain language, technical detail collapsed under "Für Entwickler".

Mid-term, the structurally correct fix is a guided OAuth flow instead of manual service-account setup.

OM-17 is not closed for this customer until step 1 ships. The standing caution protects users today regardless.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions