Skip to content

docs: Keploy on Windows no longer needs Administrator - #901

Merged
slayerjain merged 1 commit into
feat/native-macos-windows-supportfrom
docs/windows-no-admin
Aug 23, 2026
Merged

docs: Keploy on Windows no longer needs Administrator#901
slayerjain merged 1 commit into
feat/native-macos-windows-supportfrom
docs/windows-no-admin

Conversation

@slayerjain

Copy link
Copy Markdown
Member

What

Native Windows interception used a kernel packet-filter driver, which could only load from an elevated terminal — so the install page told everyone to open an Administrator terminal. Keploy now instruments the application it starts and intercepts its network calls in user space instead, so the driver, and the Administrator requirement with it, is gone.

Changes

  • installation/windows.md — drop the "open an Administrator terminal" step and the WinDivert explanation. Add the two limits that come with instrumenting the application rather than filtering packets, because users will hit them otherwise:
    • Keploy has to be the process that starts the app (so use keploy record -c / keploy test -c, not "start it yourself and point Keploy at it"), and the app must be 64-bit.
    • TCP is covered — HTTP, HTTPS, gRPC, database and cache protocols — and hostnames resolve through the app's resolver, so a dependency that no longer exists is still answered from its Mock on a replay. UDP traffic is not recorded.
  • concepts/platform-requirements.md — macOS and Windows are both userspace now, and neither needs sudo or Administrator.

The wsl --install steps keep their "as Administrator" note. That genuinely needs elevation and is unrelated to interception.

Blocked on

keploy/keploy#4476, which removes the driver. Please don't merge this before that ships — the page would describe behaviour users don't have yet.

Based on feat/native-macos-windows-support (#900) rather than main, because it edits text that only exists on that branch. Happy to rebase onto main once #900 lands.

Checks run locally

  • npm install && npm run build — succeeds (205 documents processed, static files generated)
  • npx prettier@2.8.8 --check on both files — clean
  • Commit follows Conventional Commits and is signed off

Native Windows interception used a kernel packet-filter driver, which could
only load from an elevated terminal. Keploy now instruments the application it
starts and intercepts its network calls in user space instead, so the driver —
and the Administrator requirement with it — is gone.

- installation/windows.md: drop the "open an Administrator terminal" step and
  the WinDivert explanation, and state the two limits that come with
  instrumenting the application rather than filtering packets: Keploy has to be
  the one that starts it, and UDP traffic is not recorded. Hostname resolution
  is covered, so a dependency that no longer exists is still answered from its
  Mock on a replay.
- concepts/platform-requirements.md: macOS and Windows are both userspace now,
  and neither needs sudo or Administrator.

The `wsl --install` steps keep their "as Administrator" note — that genuinely
needs elevation and is unrelated.

Blocked on keploy/keploy#4476, which removes the driver. Do not merge before it
ships, or the page will describe behaviour users do not have yet.

Signed-off-by: Shubham Jain <shubhamkjain@outlook.com>
@slayerjain
slayerjain merged commit c266b44 into feat/native-macos-windows-support Aug 23, 2026
6 checks passed
@slayerjain
slayerjain deleted the docs/windows-no-admin branch August 23, 2026 07:44
slayerjain added a commit that referenced this pull request Aug 23, 2026
Native Windows interception used a kernel packet-filter driver, which could
only load from an elevated terminal. Keploy now instruments the application it
starts and intercepts its network calls in user space instead, so the driver —
and the Administrator requirement with it — is gone.

- installation/windows.md: drop the "open an Administrator terminal" step and
  the WinDivert explanation, and state the two limits that come with
  instrumenting the application rather than filtering packets: Keploy has to be
  the one that starts it, and UDP traffic is not recorded. Hostname resolution
  is covered, so a dependency that no longer exists is still answered from its
  Mock on a replay.
- concepts/platform-requirements.md: macOS and Windows are both userspace now,
  and neither needs sudo or Administrator.

The `wsl --install` steps keep their "as Administrator" note — that genuinely
needs elevation and is unrelated.

Blocked on keploy/keploy#4476, which removes the driver. Do not merge before it
ships, or the page will describe behaviour users do not have yet.

Signed-off-by: Shubham Jain <shubhamkjain@outlook.com>
slayerjain added a commit that referenced this pull request Aug 24, 2026
* docs: document native macOS and Windows support

Keploy now runs natively on macOS (userspace interception, no eBPF, no
privileges) and on Windows/x86-64 (the WinDivert driver), covering Go, Node,
Python and Java apps. The docs still said "Keploy does not natively support
macOS/Windows" and routed everyone to Lima, WSL or Docker.

- installation/macos.md, installation/windows.md: add a native "Option 1" with
  record/replay steps, keeping Lima/WSL/Docker as alternatives. Note the macOS
  no-sudo behaviour, the launcher caveat (run the real executable, not
  `npm start`), and that Go HTTPS is handled without touching the keychain.
- concepts/platform-requirements.md: mark macOS and Windows as natively
  supported in the "Without Docker" column, with the Windows/ARM and container
  routes still listed.
- keploy-explained/dev-guide.md, server/installation_tabs.md: correct the
  "does not natively support macOS" statements.

Signed-off-by: Shubham Jain <shubhamkjain@outlook.com>

* docs: drop the Administrator requirement for native Windows (#901)

Native Windows interception used a kernel packet-filter driver, which could
only load from an elevated terminal. Keploy now instruments the application it
starts and intercepts its network calls in user space instead, so the driver —
and the Administrator requirement with it — is gone.

- installation/windows.md: drop the "open an Administrator terminal" step and
  the WinDivert explanation, and state the two limits that come with
  instrumenting the application rather than filtering packets: Keploy has to be
  the one that starts it, and UDP traffic is not recorded. Hostname resolution
  is covered, so a dependency that no longer exists is still answered from its
  Mock on a replay.
- concepts/platform-requirements.md: macOS and Windows are both userspace now,
  and neither needs sudo or Administrator.

The `wsl --install` steps keep their "as Administrator" note — that genuinely
needs elevation and is unrelated.

Blocked on keploy/keploy#4476, which removes the driver. Do not merge before it
ships, or the page will describe behaviour users do not have yet.

Signed-off-by: Shubham Jain <shubhamkjain@outlook.com>

* docs: format macos.md so the prettier check passes

The prettier lane fails on this PR because installation/macos.md carries two
consecutive blank lines. Prettier collapses them, and the check runs over every
file the PR touches, so the whole lane goes red on whitespace.

Content is untouched — this is the output of `prettier --write` on that one
file, and every file this PR changes now passes under both prettier 2.8.8 (the
version .github/workflows/prettify_code.yml asks for) and 3.9.6 (the version the
action actually installs).

Signed-off-by: Shubham Jain <shubhamkjain@outlook.com>

* ci: make the prettier check use the version it declares

prettify_code.yml passes prettier_version: 2.8.8 to
creyD/prettier_action@v4.6, and the action ignores it — the run log reads "The
following package was not found and will be installed: prettier@3.9.6". So the
formatting contract CI enforced was not the one CONTRIBUTING and
.prettierrc.json describe, and the two could drift apart silently: a file
formatted to the documented version could fail the check, and a file the check
accepts could be wrong by the documented version.

Calling prettier directly removes the ambiguity — `npx prettier@2.8.8` runs
2.8.8 — and drops a third-party action from the path for a one-line command.

2.8.8 stays because it is what this repository is formatted with: across
versioned_docs/version-4.0.0, 23 files diverge from 2.8.8 and 29 from 3.9.6.
Moving to 3.x reflows markdown and is a deliberate migration, not something to
inherit from an action's default.

Signed-off-by: Shubham Jain <shubhamkjain@outlook.com>

---------

Signed-off-by: Shubham Jain <shubhamkjain@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant