# assafdori/bypass-mdm architecture

> Architecture diagram of the GitHub repository assafdori/bypass-mdm, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/assafdori/bypass-mdm
- Repository: https://github.com/assafdori/bypass-mdm

## Overview

This repository provides two macOS Recovery scripts for bypassing local MDM enrollment during setup: a recommended v2 and a legacy version. The documented workflow is to run a script in Recovery, choose the bypass option, configure a temporary administrator, and reboot. The README describes v2’s volume detection, validation, UID conflict handling, duplicate prevention, and MDM-related changes. No source excerpts were provided, so relationships below rely on the README rather than inspected implementation details.

Main entry points: [`bypass-mdm-v2.sh`](https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh) (Bypass v2), [`bypass-mdm.sh`](https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm.sh) (Legacy bypass)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scripts["Recovery scripts"]
  node_v2["Bypass v2<br/>[bypass-mdm-v2.sh]"]
  node_legacy["Legacy bypass<br/>[bypass-mdm.sh]"]
  node_volumes["Volume detection<br/>[bypass-mdm-v2.sh]"]
  node_validation["Input validation<br/>[bypass-mdm-v2.sh]"]
  node_uid["UID resolution<br/>[bypass-mdm-v2.sh]"]
  node_duplicates["Duplicate checks<br/>[bypass-mdm-v2.sh]"]
  node_tempuser["Temporary account<br/>[bypass-mdm-v2.sh]"]
  node_mdmchanges["MDM changes<br/>[bypass-mdm-v2.sh]"]
end

node_operator(("Recovery user"))
node_restart["Reboot device"]

node_operator -->|"runs in Recovery"| node_v2
node_operator -.->|"runs if needed"| node_legacy
node_v2 -->|"detects volumes"| node_volumes
node_v2 -->|"validates inputs"| node_validation
node_v2 -->|"resolves conflicts"| node_uid
node_v2 -->|"checks entries"| node_duplicates
node_v2 -->|"creates account"| node_tempuser
node_v2 -->|"configures bypass"| node_mdmchanges
node_operator -->|"reboots after success"| node_restart

click node_v2 "https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh"
click node_legacy "https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm.sh"
click node_volumes "https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh"
click node_validation "https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh"
click node_uid "https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh"
click node_duplicates "https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh"
click node_tempuser "https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh"
click node_mdmchanges "https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_v2,node_legacy,node_volumes,node_validation,node_uid,node_duplicates,node_tempuser,node_mdmchanges,node_operator toneBlue
class node_restart toneIndigo
```

## Components

### Recovery scripts

- [Bypass v2](https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh): `bypass-mdm-v2.sh`
- [Legacy bypass](https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm.sh): `bypass-mdm.sh`
- [Volume detection](https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh): `bypass-mdm-v2.sh`
- [Input validation](https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh): `bypass-mdm-v2.sh`
- [UID resolution](https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh): `bypass-mdm-v2.sh`
- [Duplicate checks](https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh): `bypass-mdm-v2.sh`
- [Temporary account](https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh): `bypass-mdm-v2.sh`
- [MDM changes](https://github.com/assafdori/bypass-mdm/blob/main/bypass-mdm-v2.sh): `bypass-mdm-v2.sh`

### Other components

- **Recovery user**
- **Reboot device**

## Connections

- Recovery user → Bypass v2: runs in Recovery (evidence: `README.md`)
- Recovery user → Legacy bypass: runs if needed (evidence: `README.md`)
- Bypass v2 → Volume detection: detects volumes (evidence: `README.md`)
- Bypass v2 → Input validation: validates inputs (evidence: `README.md`)
- Bypass v2 → UID resolution: resolves conflicts (evidence: `README.md`)
- Bypass v2 → Duplicate checks: checks entries (evidence: `README.md`)
- Bypass v2 → Temporary account: creates account (evidence: `README.md`)
- Bypass v2 → MDM changes: configures bypass (evidence: `README.md`)
- Recovery user → Reboot device: reboots after success (evidence: `README.md`)
