セキュリティ:リポジトリの外には、何も出しません

Loomは、リポジトリとCIの中で、自社のモデルキーを使って動きます。Loomに送られるものはありません。 これは意図した設計です。デザインシステムには、何年分ものプロダクトのコードとデザイン上の判断が詰まっています。その運用に支援を受けるために、それを新しいベンダーに預けなければならないのはおかしい、と私たちは考えています。

この一文に意味を持たせるには、正確でなければなりません。そこでこのページでは、何がどこで動くか、モデルのプロバイダーに何が見えるか、私たちのWebサイトが何を収集するか、そしてまだつくっていないものを説明します。

Loomが動くのは、私たちのサーバーではなく、自社のランナーです

Loomは、自社のCIが実行するコマンドとエージェントの集まりです。ワークフローファイルは、自社のプルリクエストで、リポジトリに追加していただきます。LoomはCIの設定を編集しないからです。ワークフローは、自社が固定したバージョンのLoomのエンジンを取得し、自社のランナーで実行し、結果をリポジトリに書き戻します。

Loomが生み出すものは、すべてリポジトリかCIに置かれます。ガバナンスの記録、利用状況の集計、健全性のスナップショット、評価の結果はloom/フォルダに、実行ログは自社のワークフロー実行の成果物(アーティファクト)として残ります。経路の中にLoomのサービスがないため、システムのコピーを持つLoomのデータベースもありません。

ドキュメントサイトであるLibraryも、同じ方法でつくります。自社のCIが記録からビルドし、自社でホストします。利用状況はCookieを使わずに自ら集計し、その数値もリポジトリに残します。

明日Loomがなくなっても、システムとその履歴のすべては、リポジトリに残ります。

リポジトリに届くもの

ドラフト Loom:デザインシステムの記録、ルール、エージェント用ファイルを用意する

loom/ ブランチに 39 個のファイルを追加。自社のチームの誰かがレビューし、マージするかどうかを決めます。

変更されたファイル

  • .claude/skills/acme-app-design-system/SKILL.md+46

    同じガイダンスを、Claude Code などのエージェント向けのスキルとして。 オーナー: システムオーナー

    ---
    name: acme-app-design-system
    description: "Build and review UI with the Acme App design system (acme-app): components with lifecycle status, token…
    ---
    
    # Acme App design system
    
    > Generated by Loom from the system's records; do not edit by hand. Regenerate with `npx loom agent-pack`.
    
    ## When to use
    
    - Writing or changing UI in a repository that uses `acme-app`.
    - Choosing a colour, spacing, radius, type or motion value: use a token.
    - Reviewing UI for drift from the system (off-system components, raw values, style overrides, accessibility).
    
    ## Workflow
    
    1. Find what exists: the component index below, then `references/components.md` for the full contract (import, props …
    2. Choose by lifecycle status: stable first; a beta item if no stable one fits, named as beta in your answer and in a…
    3. Take every value from `references/tokens.md`. No raw hex, rgb or px values.
    4. Check the rules and patterns in `references/governance.md` before finishing.
    5. If something is missing, say so and propose it; do not build an off-system copy.
    6. With the Loom MCP server configured, `check_composition` and `audit_code` validate the result.
    
    ## Component index
    
    | Component | Import | Status | Purpose |
    | --- | --- | --- | --- |
    | Badge | `import { Badge } from "acme-app";` | draft (declared "proposal") | Badge: purpose not recorded yet (conver…
    | Button | `import { Button } from "acme-app";` | draft (declared "proposal") | The main action on a screen. |
    | Card | `import { Card } from "acme-app";` | draft (declared "proposal") | Card: purpose not recorded yet (converted…
    
    ## Tokens at a glance
    
    - **color:** 16 tokens
    - **spacing:** 7 tokens
    
    Every token, with value, role and restrictions: `references/tokens.md`.
    
    ## References

    ファイルにはさらに 6 行あります。

  • AGENTS.md+54

    このリポジトリで画面を書く前に、コーディングエージェントが読むもの。 オーナー: システムオーナー

    # AGENTS.md: Acme App design system
    
    > Generated by Loom from the system's records; do not edit by hand. Regenerate with `npx loom agent-pack`.
    > Records: knowledge digest `09ac1ecf2ca2`, 23 tokens, 3 components, 0 patterns.
    
    ## Use the design system
    
    - **Package:** `acme-app` 0.0.0. Import components from it; never copy their source.
    - **Skill:** `.claude/skills/acme-app-design-system/SKILL.md` (Agent Skills format) holds the workflow; its `referenc…
    - **Loom MCP server (optional):** when it is configured for this repository, prefer its tools for exact, current answ…
    - **Loom CLI:** `npx loom info --json` (project setup), `npx loom doc <Component>`, `npx loom token <name>`, and `npx…
    
    ## Rules for agents
    
    1. Build UI from the system's components. Use the exact import line and only documented props and values.
    2. Use tokens for colour, spacing, radius, type, elevation and motion. Never write raw hex, rgb or px values.
    3. Lifecycle: Every component and pattern carries a lifecycle status: draft → beta → stable → deprecated. Prefer stab…
    4. Customise through slots, variants and overridable tokens; do not override a component's className or style.
    5. Accessibility obligations of every component you use are requirements, not suggestions; accessibility findings alw…
    6. When you open a pull request, list every beta component it uses as beta in the pull request body.
    7. If the system lacks what you need, do not build it off-system: say so, use the closest fit only if it truly fits, …
    
    ## Lifecycle status
    
    | Status | Meaning | Components and patterns | Agents |
    | --- | --- | --- | --- |
    | draft | Work in progress or a proposal. Not for production UI; it may change or disappear without notice. | 3 | Not…
    | beta | Usable in product UI. The API may still change in a minor release; changes are announced in the changelog. |…
    | stable | Changes follow semver. A breaking change needs a major release with a codemod or migration pull request. |…
    | deprecated | Being removed. Existing uses keep working until the removal version; new UI must not use it. | 0 | Not…
    
    Every item has a recorded status. Definitions of done: `references/governance.md` in the skill.
    
    ## Components by status
    
    - **Draft (not suggested; not for production):** Badge, Button, Card
    
    ## Accepted rules
    
    - **Use colour tokens, not raw colours** (`loom.raw-colour`, warn): Raw colours bypass themes, modes and contrast che…

    ファイルにはさらに 14 行あります。

  • DESIGN.md+275

    記録から生成した、システム全体を一つにまとめた Markdown ファイル。 オーナー: システムオーナー

    ---
    version: alpha
    name: "Acme App"
    description: "The Acme App design system (acme-app), exported by Loom from its records: 23 tokens, 3 components, 0 pa…
    colors:
      "--semantic-surface-default": "#ffffff"
      "--semantic-text-default": "#ffffff"
      "--semantic-border-default": "#e5e7eb"
      "--semantic-action-primary": "#2563eb"
    spacing:
      "--proto-space-2": "8px"
      "--proto-space-4": "16px"
      "--space-1": "4px"
      "--space-2": "6px"
      "--space-3": "8px"
      "--space-4": "16px"
      "--space-5": "24px"
    ---
    
    # Acme App
    
    > Generated by Loom from the system's records; do not edit by hand. Regenerate with `npx loom design-md --out DESIGN.…
    > Records: knowledge digest `09ac1ecf2ca2`, source `6682be71c9f7`, observed 2026-10-25T21:55:02.612Z. 23 tokens, 3 co…
    > Format: DESIGN.md alpha (github.com/google-labs-code/design.md). Token names are the system's own. Values are the d…
    
    ## Overview
    
    Acme App ships as `acme-app` 0.0.0. Owner: Design system owner. Rights: Client-owned source; not for redistribution.
    
    - **principles** guidance: not defined (no principles foundation in the records).
    
    Known limitations:
    
    - Generic project: tokens, contracts and snapshot only; no verified reusable runtime. (no-runtime)
    
    ### Token tiers and modes
    
    Tiers are stated for 18 of 23 tokens, inferred by Loom for the rest (inferred).
    
    | Tier | Tokens |

    ファイルにはさらに 235 行あります。

  • loom.config.json+26

    システムの記録がどこにあるかを loom コマンドに伝えます。 オーナー: エンジニア

    {
      "schema": "loom.config/1",
      "system": {
        "id": "acme-app",
        "name": "Acme App"
      },
      "builder": "loom/system/acme-app.builder.json",
      "tokens": "loom/system/tokens.dtcg.json",
      "contracts": "loom/system/contracts.json",
      "components": {
        "package": "acme-app",
        "source": "src/components"
      },
      "app": [
        "src"
      ],
      "governance": "loom",
      "stack": {
        "framework": "react",
        "bundler": "vite",
        "styling": [],
        "typescript": true,
        "packageManager": "npm"
      }
    }
    
  • loom/conversion/report.md+391

    最初の監査:スコア、指摘、その根拠。 オーナー: システムオーナー

    # acme-app: 9/100, Loose threads
    
    <!-- loom:agent-generated {"schema":"loom.provenance/1.0.0","generator":"loom-conversion","generatorVersion":"1.0.0",…
    > **Machine-generated by loom-conversion (no AI model involved)** on 2026-10-25. Not yet reviewed by a human. Label: …
    
    **Loom conversion report** — how this app is *structured, governed and used*, and the AI-ready system Loom generated …
    
    | | |
    |---|---|
    | Input | `src` (app with no design system) |
    | Version | 1.0.0 |
    | Consumer code scanned | `src` — 5 files |
    | Findings | 1 critical · 27 high · 9 medium · 3 low · 1 info |
    | Generated | 2026-10-25 |
    
    ## Headline
    
    - acme-app 1.0.0: 9/100 for structure, governance and use: Loose threads.
    - 0 of 4 components have a usage contract
    - 5 proto-tokens live in CSS custom properties with no types, roles or descriptions
    - 3 of 3 semantic/component tokens hold literals instead of aliasing a lower tier
    - Required modes missing: light, dark, high contrast
    - No DTCG token file: tokens cannot be validated, exchanged or compiled by standard tools
    
    ## Scorecard
    
    | Area | Score | | Biggest issue |
    |---|---:|---|---|
    | Foundations and tokens | 38 | ████░░░░░░ | 5 proto-tokens live in CSS custom properties with no types, roles or des…
    | Components | 4 | ░░░░░░░░░░ | 0 of 4 components have a usage contract |
    | Patterns and pages | – | not assessed | No pattern or template records in the inputs |
    | Usage | 13 | █░░░░░░░░░ | 3 components in use, none with a contract |
    | Governance | 3 | ░░░░░░░░░░ | Owners per component: absent |
    | Brand, illustration, microcopy and localisation | 0 | ░░░░░░░░░░ | Brand rules: absent |
    | Tools and sync | 0 | ░░░░░░░░░░ | 4 of 4 components have no story |
    | AI readiness | 0 | ░░░░░░░░░░ | No machine-readable component contracts |
    | **Overall** | **9** | █░░░░░░░░░ | |
    
    ## Before → after
    

    ファイルにはさらに 351 行あります。

  • loom/governance.json+94

    各領域のオーナー、代理、判断のサービスレベル。 オーナー: システムオーナー

    {
      "$comment": "Seeded by Loom for a tiny team (1 person). Every value is a proposal: edit it to how you actually work…
      "schema": "loom.governance/1.0.0",
      "provenance": "real",
      "systemOwner": "Design system owner",
      "guild": [
        {
          "name": "Design system owner",
          "discipline": "design"
        },
        {
          "name": "Design system owner",
          "discipline": "engineering"
        },
        {
          "name": "Design system owner",
          "discipline": "accessibility"
        }
      ],
      "areas": [
        {
          "id": "foundations",
          "label": "Foundations (tokens, type, modes)",
          "owner": "Design system owner",
          "scope": {
            "tiers": [
              "foundation"
            ],
            "ruleCategories": [
              "colour",
              "spacing"
            ]
          },
          "autonomy": "suggest"
        },
        {
          "id": "components",
          "label": "Components",
          "owner": "Design system owner",
          "scope": {

    ファイルにはさらに 54 行あります。

  • loom/rituals.json+36

    週次トリアージなどの定例。Loom が記録から議題を下書きします。 オーナー: システムオーナー

    [
      {
        "owner": "Design system owner",
        "id": "pr-review",
        "name": "Review a Loom pull request",
        "cadence": "on-demand",
        "minutes": 15,
        "attendees": [
          "system-owner",
          "area-owner"
        ],
        "purpose": "When Loom opens a pull request, the owner of that area reviews it within the service level. No standi…
        "agenda": [
          "overdue-reviews",
          "released-changes"
        ]
      },
      {
        "owner": "Design system owner",
        "id": "quarterly-tidy",
        "name": "Quarterly tidy",
        "cadence": "quarterly",
        "minutes": 30,
        "attendees": [
          "guild"
        ],
        "purpose": "Read the health numbers, close or renew exceptions, decide the next migration step.",
        "agenda": [
          "health-metrics",
          "expiring-exceptions",
          "expired-exceptions",
          "deprecations-due"
        ]
      }
    ]
    
  • loom/rules.json+66

    チェックが適用するルール。それぞれにオーナーと理由があります。 オーナー: 領域のオーナー

    [
      {
        "id": "acme-app.modes-from-tokens",
        "version": "0.1.0",
        "title": "Colour modes come from tokens, not per-selector overrides",
        "owner": "Design system owner",
        "rationale": "The starter maps light and dark to token modes; a new rule that restyles a selector for dark mode b…
        "severity": "warn",
        "category": "colour",
        "check": {
          "kind": "manual",
          "how": "Review new CSS in a pull request: no new rules scoped to the dark selector; set the semantic token's da…
        },
        "status": "proposed",
        "history": [
          {
            "version": "0.1.0",
            "date": "2026-10-25",
            "change": "Proposed by the Loom greenfield starter."
          }
        ]
      },
      {
        "id": "acme-app.keeps-the-look",
        "version": "0.1.0",
        "title": "Each migration step keeps every key screen within 0.5% pixel difference",
        "owner": "Design system owner",
        "rationale": "Migration to the system must not change the look (owner rule); look:diff measures it.",
        "severity": "warn",
        "category": "migration",
        "check": {
          "kind": "manual",
          "how": "Run npm run look:diff on the key screens in every colour mode before merging a migration step."
        },
        "status": "proposed",
        "history": [
          {
            "version": "0.1.0",
            "date": "2026-10-25",
            "change": "Proposed by the Loom greenfield starter."

    ファイルにはさらに 26 行あります。

  • loom/system/contracts.json+292

    コンポーネントごとのコントラクト:用途、使わない場面、状態、アクセシビリティ。 オーナー: 各コンポーネントのオーナー

    {
      "schemaVersion": "2.1.0",
      "snapshotDigest": "2c76c2b16e0a7c3d6eeb5e0bcd7bd6b6f075977a5dc3165ddf39662522165a2c",
      "contracts": [
        {
          "schemaVersion": "2.1.0",
          "behavior": {
            "schemaVersion": "1.0.0",
            "domains": {
              "transitions": {
                "applicability": "needs-review",
                "rationale": "Applicability and structured obligations require assessment against source and consumers.",
                "rules": []
              },
              "focus": {
                "applicability": "needs-review",
                "rationale": "Applicability and structured obligations require assessment against source and consumers.",
                "rules": []
              },
              "announcements": {
                "applicability": "needs-review",
                "rationale": "Applicability and structured obligations require assessment against source and consumers.",
                "rules": []
              },
              "controlledState": {
                "applicability": "needs-review",
                "rationale": "Applicability and structured obligations require assessment against source and consumers.",
                "rules": []
              },
              "content": {
                "applicability": "needs-review",
                "rationale": "Applicability and structured obligations require assessment against source and consumers.",
                "rules": []
              },
              "responsive": {
                "applicability": "needs-review",
                "rationale": "Applicability and structured obligations require assessment against source and consumers.",
                "rules": []
              },
              "localization": {

    ファイルにはさらに 252 行あります。

  • loom/system/tokens.dtcg.json+409

    オープンな DTCG 形式のトークン。階層ごとに整理されています。 オーナー: 基盤のオーナー

    {
      "$schema": "https://www.designtokens.org/schemas/2025.10/format.json",
      "$description": "acme-app: first typed token set, generated by Loom from an app with no design system. Proto-tokens…
      "$extensions": {
        "app.loom": {
          "generatedAt": "2026-10-25T21:55:02.562Z",
          "exporterFindings": [],
          "modes": {
            "detected": [
              "default"
            ],
            "decision": [],
            "status": "needs-human-decision"
          },
          "validation": {
            "format": "DTCG 2025.10",
            "leaves": 23,
            "valid": 23,
            "invalid": [],
            "unresolvedAliases": []
          }
        },
        "app.loom.provenance": {
          "schema": "loom.provenance/1.0.0",
          "generator": "loom-conversion",
          "generatorVersion": "1.0.0",
          "model": null,
          "provider": null,
          "generatedAt": "2026-10-25T21:55:02.594Z",
          "ai_generated": false,
          "human_reviewed": false,
          "label": "loom:agent-generated",
          "method": "Deterministic static analysis of the repository (no AI model); every field is marked generated-from-…
        }
      },
      "proto": {
        "color-primary": {
          "$type": "color",
          "$value": {
            "colorSpace": "srgb",

    ファイルにはさらに 369 行あります。

ほかに 29 個のファイル:システムの記録、変換の作業ファイル、スキルの参照資料
  • .claude/skills/acme-app-design-system/references/DESIGN.md 12.7 KB
  • .claude/skills/acme-app-design-system/references/components.md 2.9 KB
  • .claude/skills/acme-app-design-system/references/governance.md 6.2 KB
  • .claude/skills/acme-app-design-system/references/tokens.md 1.8 KB
  • loom/conversion/artefacts/PROVENANCE.json 2.2 KB
  • loom/conversion/artefacts/agent/AGENTS.md 1.8 KB
  • loom/conversion/artefacts/agent/rules.json 2.2 KB
  • loom/conversion/artefacts/contracts/badge.contract.json 3.7 KB
  • loom/conversion/artefacts/contracts/button.contract.json 3.9 KB
  • loom/conversion/artefacts/contracts/card.contract.json 3.7 KB
  • loom/conversion/artefacts/contracts/index.json 1.3 KB
  • loom/conversion/artefacts/governance/GOVERNANCE.md 4.0 KB
  • loom/conversion/artefacts/governance/governance.json 4.6 KB
  • loom/conversion/artefacts/guidelines/brand.md 1.5 KB
  • loom/conversion/artefacts/guidelines/illustration.md 1.5 KB
  • loom/conversion/artefacts/guidelines/localization.md 1.3 KB
  • loom/conversion/artefacts/guidelines/microcopy.md 1.4 KB
  • loom/conversion/artefacts/tokens/tokens.dtcg.json 9.5 KB
  • loom/conversion/plan.json 4.2 KB
  • loom/conversion/report.json 77.3 KB
  • loom/system/acceptance.json 0.0 KB
  • loom/system/acme-app.builder.json 0.9 KB
  • loom/system/catalogue/badge.json 0.5 KB
  • loom/system/catalogue/button.json 0.7 KB
  • loom/system/catalogue/card.json 0.5 KB
  • loom/system/foundations.json 2.4 KB
  • loom/system/inventory-lock.json 1.0 KB
  • loom/system/knowledge-authority.json 0.2 KB
  • loom/system/snapshot.json 30.0 KB

チェック

  • loom lint 問題あり

    5 個のファイルにエラー 2 件、警告 31 件。主にアプリの生の色とピクセル値で、それぞれ使うべきトークンを示します。チェックが失敗するのは仕組みが働いている証拠です。チームが一つずつ直すか、受け入れます。

  • loom doctor 合格

    セットアップのチェック 14 項目のうち 13 項目が合格:Node、git、設定、記録、エージェント用ファイル。

  • loom audit 参考

    アプリ自身の三つのコンポーネントから出した最初のスコアは 34 点(Loose threads)。

  • Loom のプルリクエストのルール 合格

    変更に CI ファイル、CODEOWNERS、ルールセットは含まれません。ワークフローを追加しようとすると拒否されます:"Loom does not write CI configuration; refused .github/workflows/loom-agents.yml."

Loom の GitHub App に許可されていること

権限アクセス用途
metadatareadリポジトリ名とブランチを読む。
contentswriteLoom 自身の loom/ ブランチへのプッシュ。メインブランチには書き込みません。
pull_requestswriteドラフトのプルリクエストを開き、コメントする。

Loom が決してしないこと

  • プルリクエストの承認。Loom のコードには承認する処理がありません。
  • マージ。マージするかどうかは、自社のチームの人が決めます。
  • CI ファイル、CODEOWNERS、ルールセットの変更。コミット前に書き込み処理が拒否し、App は workflows 権限を求めません。

実行したコマンド: loom init --team "Design system owner:design+engineering+accessibility" · loom agent-pack · loom design-md --out DESIGN.md · loom lint --json · loom doctor --json · loom audit --json

サンプルのリポジトリです。小さな React アプリに 2026-10-25 に Loom 自身のコマンドを実行しました。Loom はまだお客様のリポジトリで動いたことはありません。

Loomが行うことは、すべてチームがレビューするプルリクエストとして届きます。上の例は、Loom自身のコマンドがサンプルのリポジトリで実際に生成したものです。Loomはまだお客様のリポジトリで動いたことがありません。

ランナーの外に出るものは3つだけで、どれも自社が選びます

「リポジトリの外には何も出しません」とは、Loomには何も届かないという意味です。ランナーがネットワークに一切接続しないという意味ではありません。外向きの通信は3種類あり、どれもすでに契約しているサービスに向かいます。

**自社のGitホスト。**エージェントはGitホストを通してコードを読み、loom/…という名前のブランチへのコメントやドラフトのプルリクエストとして書き戻します。使うのは、私たちのマニフェストから自社で登録し、秘密鍵を自社のシークレットに保管するGitHub App、または自社のCI自身のトークンです。

**Figma(接続した場合)。**毎晩のジョブが、自社で作成し、トークンを自社で保持するDevシートのサービスアカウントで、ライブラリを読みます。

**モデルのプロバイダー(設定した場合)。**これが最も注意して読んでいただきたい点なので、下に独立した節を設けています。

自社モデルの持ち込み(BYOM)で、モデルのプロバイダーに見えるもの

Loomのエージェントがモデルを使うのは、根拠を読みやすい文章にするためだけです。チェックそのものは決定的に動くコードで、エージェントが何をするかをモデルが決めることはありません。プロバイダーは自社で設定します。Anthropic、OpenAI互換の任意のゲートウェイ(自社のプロキシや自社でホストするモデルを含む)、ローカルのコマンド、または「なし」です。

モデルを設定した場合に、各エージェントが送るものは次のとおりです。

  • **プルリクエストのレビュー担当:**Loomのチェック結果を送ります。件数、ルール名、ファイルパス、行番号、指摘事項のメッセージです。差分やソースファイルは送りません。
  • **サポート担当:**質問の内容と、それに答えるシステム自身の記録の短い抜粋を送ります。返答に出典を示せるようにするためです。
  • **提案の受け付け担当:**提出された依頼の本文と、それに対してLoomが算出した指摘事項を送ります。
  • **レーダーと週次のスチュワード:**利用状況のデータから、件数と名前を送ります。

人が書いたテキストや、リポジトリから取り出したテキストは、モデルに届く前に区切られ、指示ではなくデータとして明示されます。これでプロンプトインジェクションのリスクは下がりますが、なくなるわけではありません。モデルにはツールがないため、返答によってエージェントが動くことはありません。

リクエストは、自社のアカウントとプロバイダーとの自社の契約のもとで、CIのシークレットにある自社のキーを使って送られます。Loomがキーや通信を目にすることはありません。Loomの設定ファイルに書き込まれたキーは拒否します。プロバイダーを「なし」にすると、エージェントはLoom自身の定型の文言を使い、どのモデルにも何も送りません。

アクセスは、必要最小限です

GitHub Appが求める権限は3つです。リポジトリのメタデータ(読み取り)、コンテンツ(読み取り。書き込みはLoom専用のブランチに限る)、プルリクエストです。トークンは一つのリポジトリだけを対象とし、それ以上の権限を与えるトークンはLoomが拒否します。Loomがリポジトリを管理したり、ワークフローを変更したり、シークレットを読んだり、承認やマージをしたりすることはありません。自社のブランチ保護の設定は、そのまま有効です。

GitLabとAzure DevOpsでも、同じインターフェースと同じルールを使います。

エージェントの操作は、すべて明示され、記録されます

ドラフト、レポート、プルリクエストには、機械可読なラベルがつきます。モデルが書いた部分があるかどうか、どのモデルとプロバイダーか、そしてまだ人がレビューしていないことを示します。プルリクエストにはloom:agent-generatedラベルと開示文がつき、ラベルがなければ実行は失敗します。これは、EU AI法第50条の透明性に関する義務に沿ったものです。

ツールとモデルの呼び出しは、すべて実行ログに記録され、自社のワークフロー実行の成果物として残ります。ログに残すのは入力と出力のフィンガープリントで、内容そのものは残しません。呼び出し回数、トークン数、費用の見積もりで、実行に上限を設けられます。

判断するのは人です。定型作業はエージェントが、見える形で担います。

私たちのメンバーが、自社のコードを扱うとき

ご支援によっては、コンサルタントがコードのコピーを確認する必要があります。それはご支援の内容で定めた場合に限ります。クローン、キャッシュ、派生ファイルはすべて一つのフォルダにまとめ、終了時に一つのコマンドでそれらをすべて削除し、何も残っていないことを確認し、削除した各ファイルのフィンガープリントを記した受領記録をお渡しします。この削除の仕組みは構築してテスト済みですが、実際の案件ではまだ使っていません。

ディスカバリー(現状調査)では、チームアンケートの回答を、回答者それぞれのブラウザの中でコンサルタントの鍵に向けて暗号化してから送ります。Loomに投稿されるものはなく、5人未満のグループの結果を単独で表示することはありません。

お客様のコード、デザイン、プロンプト、出力を、AIモデルの学習に使うことはありません。販売したり共有したりすることも一切ありません。

私たちのWebサイトが収集するもの

Webサイトは、Loom自身がデータを持つ唯一の場所です。だからこそ、はっきりお伝えします。

**サイトの閲覧。**ホスティング先のCloudflareが、ページの配信とサービスの保護のために、IPアドレスとリクエストの情報を処理します。このサイトはCookieを設定せず、広告やトラッキングのスクリプトも読み込みません。

**ヘルスチェック。**回答はブラウザの中にとどまります。詳細レポートを希望された場合に限り、氏名、勤務先のメールアドレス、会社名と役職、プロフィール、領域ごとのスコア、使用した言語が私たちに届きます。個々の回答とメモは、お使いの端末に残ります。レポートの依頼は、保存場所として西ヨーロッパを優先するCloudflareのデータベースに保管され、12か月保持されます。毎日実行する削除処理は構築済みですが、まだ稼働していません。稼働するまでは、ご依頼に応じて削除します。

**スパム対策。**レポートのフォームではCloudflare Turnstileを使い、人とボットを見分けるために、IPアドレスとブラウザの情報を処理します。私たちのサーバーは、繰り返しの送信を制限するためにIPアドレスを短時間メモリ上に保持するだけで、保存することはありません。

まだないもの

SOC 2、ISO 27001、プライバシーマークは、いずれも取得していません。私たちは小さな会社であり、そうではないかのように見せるより、正直にお伝えしたいと考えています。セキュリティに関する質問票には、日本のセキュリティチェックシートも含めて、直接お答えします。

エージェントとそのCIワークフローは構築済みで、シミュレーションのGitホストと代替のモデルでテストしています。お客様のCIで動かしたことも、お客様に代わって実際のモデルを呼び出したことも、まだありません。私たちのGitHub Appは作成済みですが、まだ登録していません。最初の実際の導入が次のステップで、それが実現したら、このページでお知らせします。

データ処理契約とセキュリティの概要は、弁護士の確認中のドラフトです。ご依頼に応じて、署名済みの約束ではなくドラフトとしてお渡しします。

今後の予定

  • お客様が頼る前に、まずLoomのGitHub Appを登録し、実際のリポジトリでエージェントを動かします。
  • 導入がファイル一つと固定したバージョン一つで済むよう、LoomをCIの一つのステップとしてまとめます。
  • 規制業種の最初のお客様とご一緒する前に、改ざんを検知できる監査ログを追加します。
  • SOC 2の準備計画に沿って進めます。まず方針と統制を文書化し、次にType Iのレポート、その次にType IIのレポートへと、お客様からのご要望に応じて各段階を始めます。
  • このWebサイトで、Cookieを設定せず個人データも収集しないCloudflare Web Analyticsを有効にします。その際は、このページとプライバシーに関する通知を更新します。
  • ホスト型のLoom cloudは、3社のお客様からご要望をいただいてから提供します。どなたかが利用する前に、専用のセキュリティページを用意します。

コードもデザインも、リポジトリに残ります。Loomのほうが、そこへ出向きます。

よくある質問

アクセス権を一切渡さずに、Loomを使えますか?

はい。それが標準です。私たちのマニフェストから自社でAppを登録するか、自社のCIのトークンを使います。キーは自社のシークレットに残ります。

自社のネットワークから出ないモデルを使えますか?

はい。自社のゲートウェイやローカルのコマンドをLoomの接続先に指定するか、モデルを使わずに動かせます。

データはどこに保管されますか?

システムと、Loomが書き出すものはすべて、リポジトリに残ります。ヘルスチェックのレポートの依頼は、上で説明したとおりCloudflareに保管されます。ご支援で作業用のコピーをつくった場合は、終了時に受領記録とともに削除します。

セキュリティ上の問題は、どう報告すればよいですか?

お問い合わせフォームから、詳細を添えてお知らせください。受領を確認し、進捗をお伝えします。ご自身のものではないデータにはアクセスしないでください。また、問題を公表する前に、修正のための合理的な時間をいただけますようお願いします。

まずは、自社のデザインシステムについてお聞かせください。

私たちはシステムを読み、見つけたことをお見せし、何から直すかをチームと一緒に決めます。