sync: auto-sync from DESKTOP-0O8A1RL at 2026-04-20 11:47:09

Author: Mike Swanson
Machine: DESKTOP-0O8A1RL
Timestamp: 2026-04-20 11:47:09
This commit is contained in:
2026-04-20 11:47:10 -07:00
parent be23c91ea4
commit 21417c6c20
4 changed files with 864 additions and 1 deletions

View File

@@ -0,0 +1,73 @@
# Arizona Computer Guru — Website & Hosting
> Last updated: 2026-04-20
**Status:** ACTIVE
---
## Infrastructure
| Resource | Details | Vault path |
|----------|---------|------------|
| Website | https://azcomputerguru.com | — |
| Hosting | IX Web Hosting (ixwebhosting.com) | `infrastructure/ix-server.sops.yaml` |
| Control panel | cPanel | Login: `azcomputerguru` user via WHM create_user_session API (root creds in vault) |
| CMS/Platform | WordPress | DB: `azcomputerguru_acg2025`, table prefix: `Lvkai5BQ_` |
| Server | 172.16.3.10 (external: 72.194.62.5) | Rocky Linux, WHM port 2087 |
**Accessing cPanel (workaround — forced password change loop on browser):**
```bash
ROOT_PASS=$(bash D:/vault/scripts/vault.sh get-field infrastructure/ix-server.sops.yaml credentials.password)
# Clear forced password change
curl -sk -u "root:$ROOT_PASS" "https://172.16.3.10:2087/json-api/modifyacct?api.version=1&user=azcomputerguru&FORCE_PASSWORD_CHANGE=0"
# Get fresh session URL
curl -sk -u "root:$ROOT_PASS" "https://172.16.3.10:2087/json-api/create_user_session?api.version=1&user=azcomputerguru&service=cpaneld" | jq -r '.data.url'
```
**cPanel notes:**
- cPanel Fileman UAPI `save_file_content` works with `dir` (relative to homedir) + `file` params
- SSH from Windows: Windows id_ed25519 key NOT in authorized_keys; use WHM API as workaround
- WP admin user: `mike` (password TempWP2026! — temp, vault at reset)
- WP previous password was `Paper123!@#` (seen in browser autofill)
**Design notes:**
- Primary color: orange `#F5821F`
- Secondary: dark charcoal/navy `#2B3A4A`
- Orange horizontal rule lines as section dividers
- Barlow / Barlow Condensed font family
- Mobile-first with hamburger nav
---
## Live Files
| URL | Server path | Status |
|-----|-------------|--------|
| https://azcomputerguru.com/privacy/ | `/public_html/privacy/index.html` | LIVE |
| https://azcomputerguru.com/terms/ | `/public_html/terms/index.html` | LIVE |
Local copies: `clients/azcomputerguru-site/privacy.html`, `clients/azcomputerguru-site/terms.html`
**Note:** `/privacy` (no trailing slash) 301-redirects to `/privacy/` — Apache serves these as static files, bypassing WordPress routing entirely.
---
## Pending / Next Up
- [x] Deploy privacy.html → https://azcomputerguru.com/privacy/
- [x] Deploy terms.html → https://azcomputerguru.com/terms/
- [ ] Add URLs to ComputerGuru AI Remediation app registration (portal.azure.com → App registrations → Branding & properties → Terms of service URL + Privacy statement URL)
- [ ] Vault cPanel credentials at `clients/azcomputerguru/cpanel.sops.yaml`
- [ ] Add Windows SSH key to authorized_keys on 172.16.3.10 (root@)
- [ ] Reset mike WP password to something permanent and vault it
---
## Recent Changes
| Date | By | Change | Status |
|------|-----|--------|--------|
| 2026-04-20 | Mike | Created privacy.html + terms.html for ComputerGuru AI Remediation Entra app | COMPLETE |
| 2026-04-20 | Claude | Deployed as static dirs `/public_html/privacy/index.html` + `/public_html/terms/index.html` | COMPLETE |
| 2026-04-20 | Claude | Publisher verification applied to Entra app (MPN 6149186 → Arizona Computer Guru LLC) | COMPLETE |

View File

@@ -0,0 +1,404 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Privacy Policy — Arizona Computer Guru LLC</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;600;700&family=Barlow+Condensed:wght@600;700&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--orange: #F5821F;
--orange-dark: #D96E10;
--charcoal: #2B3A4A;
--charcoal-light: #3D5066;
--text: #2B3A4A;
--text-muted: #607080;
--bg: #ffffff;
--rule: #F5821F;
--section-bg: #F8F9FA;
}
body {
font-family: 'Barlow', sans-serif;
color: var(--text);
background: var(--bg);
line-height: 1.7;
font-size: 16px;
}
/* ── HEADER ── */
header {
background: var(--charcoal);
padding: 0;
position: sticky;
top: 0;
z-index: 100;
box-shadow: 0 2px 12px rgba(0,0,0,0.2);
}
.header-inner {
max-width: 1100px;
margin: 0 auto;
padding: 0 2rem;
display: flex;
align-items: center;
justify-content: space-between;
height: 64px;
}
.logo {
font-family: 'Barlow Condensed', sans-serif;
font-size: 1.5rem;
font-weight: 700;
color: #fff;
text-decoration: none;
letter-spacing: 0.02em;
}
.logo span { color: var(--orange); }
nav a {
font-family: 'Barlow', sans-serif;
font-weight: 600;
font-size: 0.875rem;
color: rgba(255,255,255,0.75);
text-decoration: none;
text-transform: uppercase;
letter-spacing: 0.08em;
padding: 0.5rem 1rem;
border: 1px solid transparent;
border-radius: 4px;
transition: color 0.2s, border-color 0.2s;
}
nav a:hover {
color: var(--orange);
border-color: var(--orange);
}
/* ── ORANGE RULE ── */
.rule {
height: 4px;
background: var(--orange);
}
/* ── HERO ── */
.hero {
background: var(--charcoal);
padding: 3.5rem 2rem 3rem;
text-align: center;
}
.hero-label {
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 0.2em;
text-transform: uppercase;
color: var(--orange);
margin-bottom: 0.75rem;
}
.hero h1 {
font-family: 'Barlow Condensed', sans-serif;
font-size: clamp(2rem, 5vw, 3rem);
font-weight: 700;
color: #fff;
letter-spacing: 0.01em;
line-height: 1.15;
margin-bottom: 1rem;
}
.hero-meta {
font-size: 0.875rem;
color: rgba(255,255,255,0.5);
}
/* ── MAIN CONTENT ── */
.content-wrap {
max-width: 820px;
margin: 0 auto;
padding: 3.5rem 2rem 5rem;
}
.intro-block {
border-left: 4px solid var(--orange);
padding: 1.25rem 1.5rem;
background: var(--section-bg);
border-radius: 0 6px 6px 0;
margin-bottom: 3rem;
}
.intro-block p {
color: var(--charcoal-light);
font-size: 0.975rem;
}
.intro-block strong { color: var(--charcoal); }
section {
margin-bottom: 2.75rem;
}
section:last-child { margin-bottom: 0; }
.section-header {
display: flex;
align-items: center;
gap: 1rem;
margin-bottom: 1rem;
}
.section-num {
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 0.15em;
color: var(--orange);
text-transform: uppercase;
min-width: 2.5rem;
}
h2 {
font-family: 'Barlow Condensed', sans-serif;
font-size: 1.4rem;
font-weight: 700;
color: var(--charcoal);
letter-spacing: 0.02em;
}
.section-rule {
flex: 1;
height: 1px;
background: #E0E6ED;
}
p { margin-bottom: 0.9rem; color: var(--text-muted); }
p:last-child { margin-bottom: 0; }
ul {
margin: 0.5rem 0 0.9rem 0;
padding-left: 1.5rem;
}
li {
color: var(--text-muted);
margin-bottom: 0.4rem;
}
li::marker { color: var(--orange); }
strong { color: var(--charcoal); font-weight: 600; }
.highlight-box {
background: var(--charcoal);
color: rgba(255,255,255,0.85);
border-radius: 8px;
padding: 1.5rem 2rem;
margin: 1.25rem 0;
}
.highlight-box p { color: rgba(255,255,255,0.75); margin-bottom: 0; }
.highlight-box strong { color: var(--orange); }
/* ── CONTACT CARD ── */
.contact-card {
background: var(--section-bg);
border: 1px solid #E0E6ED;
border-top: 3px solid var(--orange);
border-radius: 0 0 8px 8px;
padding: 1.75rem 2rem;
margin-top: 1rem;
}
.contact-card p { margin-bottom: 0.35rem; }
.contact-card a { color: var(--orange); text-decoration: none; font-weight: 600; }
.contact-card a:hover { text-decoration: underline; }
/* ── FOOTER ── */
footer {
background: var(--charcoal);
padding: 2rem;
text-align: center;
}
.footer-inner {
max-width: 820px;
margin: 0 auto;
}
.footer-brand {
font-family: 'Barlow Condensed', sans-serif;
font-size: 1.1rem;
font-weight: 700;
color: rgba(255,255,255,0.6);
margin-bottom: 0.5rem;
}
.footer-brand span { color: var(--orange); }
footer p {
font-size: 0.8rem;
color: rgba(255,255,255,0.35);
margin-bottom: 0;
}
footer a { color: rgba(255,255,255,0.5); text-decoration: none; }
footer a:hover { color: var(--orange); }
@media (max-width: 600px) {
.header-inner { padding: 0 1rem; }
.content-wrap { padding: 2.5rem 1.25rem 4rem; }
.hero { padding: 2.5rem 1.25rem 2rem; }
}
</style>
</head>
<body>
<header>
<div class="header-inner">
<a href="https://azcomputerguru.com" class="logo">
<span>Arizona</span> ComputerGuru
</a>
<nav>
<a href="https://azcomputerguru.com">&larr; Back to Home</a>
</nav>
</div>
</header>
<div class="rule"></div>
<div class="hero">
<div class="hero-label">Legal &amp; Compliance</div>
<h1>Privacy Policy</h1>
<p class="hero-meta">ComputerGuru &mdash; AI Remediation Application &nbsp;&bull;&nbsp; Effective April 20, 2026</p>
</div>
<div class="rule"></div>
<div class="content-wrap">
<div class="intro-block">
<p>This Privacy Policy describes how <strong>Arizona Computer Guru LLC</strong> ("ACG," "we," "us") accesses and handles Microsoft 365 tenant data through our internal security tool, the <strong>ComputerGuru &mdash; AI Remediation</strong> application (Microsoft Entra App ID: <code>fabb3421-8b34-484b-bc17-e46de9703418</code>). This application is a multi-tenant Microsoft Graph API application used exclusively by authorized ACG technicians.</p>
</div>
<section>
<div class="section-header">
<span class="section-num">01</span>
<h2>What This Application Is</h2>
<div class="section-rule"></div>
</div>
<p>The ComputerGuru AI Remediation application is an internal MSP security tool used by Arizona Computer Guru LLC technicians to perform point-in-time security investigations on client Microsoft 365 tenants. It is not a commercial software product and is not available to the general public.</p>
<p>The application accesses client tenants exclusively through <strong>Microsoft admin consent</strong>, granted by the client organization's global administrator. Access is never obtained without explicit, verified authorization from the client organization.</p>
</section>
<section>
<div class="section-header">
<span class="section-num">02</span>
<h2>What Data Is Accessed</h2>
<div class="section-rule"></div>
</div>
<p>When performing a security investigation, the application may read the following data from the client Microsoft 365 tenant via Microsoft Graph API and Exchange REST API:</p>
<ul>
<li>Sign-in logs and authentication history (interactive sign-ins, 30-day window)</li>
<li>Mailbox inbox rules, including rules not visible through standard Outlook interfaces</li>
<li>Mailbox forwarding configuration (ForwardingAddress, ForwardingSmtpAddress)</li>
<li>Mailbox delegate permissions and SendAs grants</li>
<li>OAuth2 permission grants and application role assignments for individual users</li>
<li>Registered authentication methods (MFA methods, creation dates)</li>
<li>Directory audit logs (30-day window, scoped to the investigated user)</li>
<li>Identity Protection risky user signals and risk detections</li>
<li>Recent sent items and deleted items (read for anomaly detection; limited to 25 items)</li>
<li>Basic user profile attributes (display name, UPN, account status, password change dates)</li>
</ul>
</section>
<section>
<div class="section-header">
<span class="section-num">03</span>
<h2>How Data Is Used</h2>
<div class="section-rule"></div>
</div>
<p>Data accessed through this application is used solely for the following purposes:</p>
<ul>
<li>Identifying indicators of account compromise, unauthorized access, or credential theft</li>
<li>Detecting malicious inbox rules, unauthorized forwarding, or suspicious OAuth grants</li>
<li>Producing a written security investigation report delivered to the client organization</li>
<li>Performing authorized remediation actions (session revocation, forwarding removal, etc.) at the client's explicit request</li>
</ul>
<div class="highlight-box">
<p><strong>Data is not stored.</strong> All data accessed through this application remains within the technician's active work session. Raw API responses are written to temporary local storage (<code>/tmp/remediation-tool/</code>) and are not transmitted to any external server, database, or third-party service. Temporary files are not retained beyond the work session.</p>
</div>
</section>
<section>
<div class="section-header">
<span class="section-num">04</span>
<h2>Data Retention &amp; Storage</h2>
<div class="section-rule"></div>
</div>
<p>Arizona Computer Guru LLC does <strong>not</strong> maintain a persistent database of client Microsoft 365 data obtained through this application. Specifically:</p>
<ul>
<li>No client mailbox content is retained after the investigation session</li>
<li>No sign-in log data is stored in ACG systems beyond the session</li>
<li>Investigation reports are retained in ACG's secure, encrypted internal systems as part of the client service record, consistent with standard MSP documentation practices</li>
<li>Client data is never sold, licensed, or shared with any third party</li>
</ul>
</section>
<section>
<div class="section-header">
<span class="section-num">05</span>
<h2>Authorization &amp; Access Control</h2>
<div class="section-rule"></div>
</div>
<p>This application operates exclusively under the following access controls:</p>
<ul>
<li><strong>Admin consent required:</strong> The application cannot access any tenant without a global administrator explicitly approving access through Microsoft's admin consent flow</li>
<li><strong>Authorized technicians only:</strong> Only credentialed Arizona Computer Guru LLC staff members have access to the application credentials and tooling</li>
<li><strong>On-demand only:</strong> The application does not run continuously or on a schedule. It is invoked only when an authorized investigation is in progress</li>
<li><strong>Consent revocable:</strong> Client organizations may revoke access at any time through their Microsoft Entra admin center (Enterprise Applications → ComputerGuru AI Remediation → Delete)</li>
</ul>
</section>
<section>
<div class="section-header">
<span class="section-num">06</span>
<h2>Contact &amp; Consent Revocation</h2>
<div class="section-rule"></div>
</div>
<p>For questions about this privacy policy, to request information about what data was accessed during an investigation, or to revoke consent:</p>
<div class="contact-card">
<p><strong>Arizona Computer Guru LLC</strong></p>
<p>Email: <a href="mailto:mike@azcomputerguru.com">mike@azcomputerguru.com</a></p>
<p>Phone: <a href="tel:+15205551234">(520) 526-9974</a></p>
<p>Website: <a href="https://azcomputerguru.com">azcomputerguru.com</a></p>
<p style="margin-top:0.75rem; font-size:0.875rem;">To revoke application access directly: <strong>Microsoft Entra admin center → Enterprise Applications → ComputerGuru AI Remediation → Properties → Delete</strong></p>
</div>
</section>
<section>
<div class="section-header">
<span class="section-num">07</span>
<h2>Changes to This Policy</h2>
<div class="section-rule"></div>
</div>
<p>Arizona Computer Guru LLC may update this privacy policy as the application's capabilities or our data practices change. The effective date at the top of this page reflects the most recent revision. Material changes will be communicated to active clients.</p>
</section>
</div>
<div class="rule"></div>
<footer>
<div class="footer-inner">
<div class="footer-brand"><span>Arizona</span> ComputerGuru LLC</div>
<p>Managed IT Services &bull; Tucson, AZ &bull; <a href="https://azcomputerguru.com">azcomputerguru.com</a></p>
<p style="margin-top:0.5rem;"><a href="/terms.html">Terms of Service</a> &nbsp;&bull;&nbsp; <a href="/privacy.html">Privacy Policy</a></p>
</div>
</footer>
</body>
</html>

View File

@@ -0,0 +1,386 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Terms of Service — Arizona Computer Guru LLC</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;600;700&family=Barlow+Condensed:wght@600;700&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--orange: #F5821F;
--orange-dark: #D96E10;
--charcoal: #2B3A4A;
--charcoal-light: #3D5066;
--text: #2B3A4A;
--text-muted: #607080;
--bg: #ffffff;
--rule: #F5821F;
--section-bg: #F8F9FA;
}
body {
font-family: 'Barlow', sans-serif;
color: var(--text);
background: var(--bg);
line-height: 1.7;
font-size: 16px;
}
/* ── HEADER ── */
header {
background: var(--charcoal);
position: sticky;
top: 0;
z-index: 100;
box-shadow: 0 2px 12px rgba(0,0,0,0.2);
}
.header-inner {
max-width: 1100px;
margin: 0 auto;
padding: 0 2rem;
display: flex;
align-items: center;
justify-content: space-between;
height: 64px;
}
.logo {
font-family: 'Barlow Condensed', sans-serif;
font-size: 1.5rem;
font-weight: 700;
color: #fff;
text-decoration: none;
letter-spacing: 0.02em;
}
.logo span { color: var(--orange); }
nav a {
font-family: 'Barlow', sans-serif;
font-weight: 600;
font-size: 0.875rem;
color: rgba(255,255,255,0.75);
text-decoration: none;
text-transform: uppercase;
letter-spacing: 0.08em;
padding: 0.5rem 1rem;
border: 1px solid transparent;
border-radius: 4px;
transition: color 0.2s, border-color 0.2s;
}
nav a:hover {
color: var(--orange);
border-color: var(--orange);
}
.rule { height: 4px; background: var(--orange); }
/* ── HERO ── */
.hero {
background: var(--charcoal);
padding: 3.5rem 2rem 3rem;
text-align: center;
}
.hero-label {
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 0.2em;
text-transform: uppercase;
color: var(--orange);
margin-bottom: 0.75rem;
}
.hero h1 {
font-family: 'Barlow Condensed', sans-serif;
font-size: clamp(2rem, 5vw, 3rem);
font-weight: 700;
color: #fff;
letter-spacing: 0.01em;
line-height: 1.15;
margin-bottom: 1rem;
}
.hero-meta {
font-size: 0.875rem;
color: rgba(255,255,255,0.5);
}
/* ── CONTENT ── */
.content-wrap {
max-width: 820px;
margin: 0 auto;
padding: 3.5rem 2rem 5rem;
}
.intro-block {
border-left: 4px solid var(--orange);
padding: 1.25rem 1.5rem;
background: var(--section-bg);
border-radius: 0 6px 6px 0;
margin-bottom: 3rem;
}
.intro-block p { color: var(--charcoal-light); font-size: 0.975rem; }
.intro-block strong { color: var(--charcoal); }
section { margin-bottom: 2.75rem; }
section:last-child { margin-bottom: 0; }
.section-header {
display: flex;
align-items: center;
gap: 1rem;
margin-bottom: 1rem;
}
.section-num {
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 0.15em;
color: var(--orange);
text-transform: uppercase;
min-width: 2.5rem;
}
h2 {
font-family: 'Barlow Condensed', sans-serif;
font-size: 1.4rem;
font-weight: 700;
color: var(--charcoal);
letter-spacing: 0.02em;
}
.section-rule { flex: 1; height: 1px; background: #E0E6ED; }
p { margin-bottom: 0.9rem; color: var(--text-muted); }
p:last-child { margin-bottom: 0; }
ul { margin: 0.5rem 0 0.9rem 0; padding-left: 1.5rem; }
li { color: var(--text-muted); margin-bottom: 0.4rem; }
li::marker { color: var(--orange); }
strong { color: var(--charcoal); font-weight: 600; }
.warning-box {
background: #FFF8F2;
border: 1px solid #F5821F40;
border-left: 4px solid var(--orange);
border-radius: 0 6px 6px 0;
padding: 1.25rem 1.5rem;
margin: 1.25rem 0;
}
.warning-box p { color: var(--charcoal-light); margin-bottom: 0; }
.warning-box strong { color: var(--charcoal); }
.disclaimer-box {
background: var(--charcoal);
color: rgba(255,255,255,0.85);
border-radius: 8px;
padding: 1.5rem 2rem;
margin: 1.25rem 0;
}
.disclaimer-box p { color: rgba(255,255,255,0.65); margin-bottom: 0.5rem; }
.disclaimer-box p:last-child { margin-bottom: 0; }
.disclaimer-box strong { color: var(--orange); }
.contact-card {
background: var(--section-bg);
border: 1px solid #E0E6ED;
border-top: 3px solid var(--orange);
border-radius: 0 0 8px 8px;
padding: 1.75rem 2rem;
margin-top: 1rem;
}
.contact-card p { margin-bottom: 0.35rem; }
.contact-card a { color: var(--orange); text-decoration: none; font-weight: 600; }
.contact-card a:hover { text-decoration: underline; }
footer {
background: var(--charcoal);
padding: 2rem;
text-align: center;
}
.footer-inner { max-width: 820px; margin: 0 auto; }
.footer-brand {
font-family: 'Barlow Condensed', sans-serif;
font-size: 1.1rem;
font-weight: 700;
color: rgba(255,255,255,0.6);
margin-bottom: 0.5rem;
}
.footer-brand span { color: var(--orange); }
footer p { font-size: 0.8rem; color: rgba(255,255,255,0.35); margin-bottom: 0; }
footer a { color: rgba(255,255,255,0.5); text-decoration: none; }
footer a:hover { color: var(--orange); }
@media (max-width: 600px) {
.header-inner { padding: 0 1rem; }
.content-wrap { padding: 2.5rem 1.25rem 4rem; }
.hero { padding: 2.5rem 1.25rem 2rem; }
}
</style>
</head>
<body>
<header>
<div class="header-inner">
<a href="https://azcomputerguru.com" class="logo">
<span>Arizona</span> ComputerGuru
</a>
<nav>
<a href="https://azcomputerguru.com">&larr; Back to Home</a>
</nav>
</div>
</header>
<div class="rule"></div>
<div class="hero">
<div class="hero-label">Legal &amp; Compliance</div>
<h1>Terms of Service</h1>
<p class="hero-meta">ComputerGuru &mdash; AI Remediation Application &nbsp;&bull;&nbsp; Effective April 20, 2026</p>
</div>
<div class="rule"></div>
<div class="content-wrap">
<div class="intro-block">
<p>These Terms of Service govern access to and use of the <strong>ComputerGuru &mdash; AI Remediation</strong> application (Microsoft Entra App ID: <code>fabb3421-8b34-484b-bc17-e46de9703418</code>), a multi-tenant Microsoft Graph API application operated by <strong>Arizona Computer Guru LLC</strong> ("ACG"). By granting admin consent to this application, the consenting organization agrees to these terms.</p>
</div>
<section>
<div class="section-header">
<span class="section-num">01</span>
<h2>Authorized Use Only</h2>
<div class="section-rule"></div>
</div>
<p>This application is an <strong>internal MSP security tool</strong> operated exclusively by Arizona Computer Guru LLC. It is not a commercial product and is not licensed to third parties. Access to the application's credentials, tooling, and client session data is restricted to credentialed ACG technicians.</p>
<div class="warning-box">
<p><strong>Unauthorized use is prohibited.</strong> Any attempt to access, replicate, reverse-engineer, or misuse this application outside of an authorized ACG service engagement is a violation of these terms and may violate applicable computer fraud and data protection laws.</p>
</div>
</section>
<section>
<div class="section-header">
<span class="section-num">02</span>
<h2>Client Admin Consent</h2>
<div class="section-rule"></div>
</div>
<p>The application accesses client Microsoft 365 tenants exclusively through <strong>Microsoft admin consent</strong>, granted by the client organization's global administrator through the standard Microsoft Entra admin consent flow. By completing the consent process, the consenting organization:</p>
<ul>
<li>Confirms they are a global administrator or have been delegated authority to grant admin consent on behalf of their organization</li>
<li>Authorizes ACG technicians to access the data types listed in the <a href="/privacy.html" style="color:var(--orange);font-weight:600;">Privacy Policy</a> for the purpose of security investigation and authorized remediation</li>
<li>Understands that this authorization may be revoked at any time through the Microsoft Entra admin center</li>
</ul>
<p>ACG will not access a client tenant through this application without a prior service agreement or explicit client request for a security investigation.</p>
</section>
<section>
<div class="section-header">
<span class="section-num">03</span>
<h2>Scope of Use</h2>
<div class="section-rule"></div>
</div>
<p>ACG agrees to use this application only for the following purposes on behalf of the consenting organization:</p>
<ul>
<li>Performing security investigations to identify account compromise, unauthorized access, or malicious configuration changes</li>
<li>Detecting and documenting malicious inbox rules, forwarding, OAuth grants, or other indicators of breach</li>
<li>Executing authorized remediation actions (such as session revocation or rule removal) at the explicit request of the client organization</li>
<li>Producing written investigation reports for delivery to the client</li>
</ul>
<p>ACG will not use this application to access tenant data for any purpose outside of an active, authorized service engagement with the consenting organization.</p>
</section>
<section>
<div class="section-header">
<span class="section-num">04</span>
<h2>Data Handling &amp; Third Parties</h2>
<div class="section-rule"></div>
</div>
<p>ACG does not share, sell, license, or transmit client Microsoft 365 data obtained through this application to any third party. Specifically:</p>
<ul>
<li>Raw API data is processed locally within the ACG technician's session and is not uploaded to any external platform</li>
<li>Investigation reports may be stored in ACG's secure internal systems as part of the client service record</li>
<li>No client tenant data is used for any purpose other than the service engagement for which consent was granted</li>
<li>ACG's internal data handling practices are governed by our broader client service agreement and applicable data protection obligations</li>
</ul>
</section>
<section>
<div class="section-header">
<span class="section-num">05</span>
<h2>Revoking Access</h2>
<div class="section-rule"></div>
</div>
<p>The consenting organization may revoke this application's access to their tenant at any time without notice to ACG. To revoke:</p>
<ul>
<li>Sign in to the <strong>Microsoft Entra admin center</strong> (entra.microsoft.com) as a global administrator</li>
<li>Navigate to <strong>Enterprise Applications</strong></li>
<li>Search for <strong>ComputerGuru AI Remediation</strong></li>
<li>Select the application and click <strong>Delete</strong> or <strong>Disable</strong></li>
</ul>
<p>Revocation takes effect immediately. ACG will no longer be able to obtain tokens for the tenant after consent is revoked.</p>
</section>
<section>
<div class="section-header">
<span class="section-num">06</span>
<h2>Disclaimer of Warranties</h2>
<div class="section-rule"></div>
</div>
<div class="disclaimer-box">
<p>The ComputerGuru AI Remediation application is provided <strong>"as-is"</strong> for MSP security operations. Arizona Computer Guru LLC makes no warranty, express or implied, regarding the completeness, accuracy, or fitness for a particular purpose of any investigation findings produced by this tool.</p>
<p>Security investigations reflect data available at the time of the investigation. ACG is not liable for security incidents that occur before, during, or after an investigation, or for any damages arising from reliance on investigation findings.</p>
</div>
</section>
<section>
<div class="section-header">
<span class="section-num">07</span>
<h2>Governing Law</h2>
<div class="section-rule"></div>
</div>
<p>These terms are governed by the laws of the State of Arizona. Any disputes arising from the use of this application shall be subject to the jurisdiction of the courts of Pima County, Arizona.</p>
</section>
<section>
<div class="section-header">
<span class="section-num">08</span>
<h2>Contact</h2>
<div class="section-rule"></div>
</div>
<p>Questions about these terms or about how this application is used on your behalf:</p>
<div class="contact-card">
<p><strong>Arizona Computer Guru LLC</strong></p>
<p>Email: <a href="mailto:mike@azcomputerguru.com">mike@azcomputerguru.com</a></p>
<p>Phone: <a href="tel:+15205269974">(520) 526-9974</a></p>
<p>Website: <a href="https://azcomputerguru.com">azcomputerguru.com</a></p>
</div>
</section>
</div>
<div class="rule"></div>
<footer>
<div class="footer-inner">
<div class="footer-brand"><span>Arizona</span> ComputerGuru LLC</div>
<p>Managed IT Services &bull; Tucson, AZ &bull; <a href="https://azcomputerguru.com">azcomputerguru.com</a></p>
<p style="margin-top:0.5rem;"><a href="/terms.html">Terms of Service</a> &nbsp;&bull;&nbsp; <a href="/privacy.html">Privacy Policy</a></p>
</div>
</footer>
</body>
</html>