netek-disconnect-plugin
July 30, 2026 · View on GitHub
A Claude Code plugin for cancelling Israeli service subscriptions through netek.co.il — mobile, internet, landline, TV, international calling, water bars, newspaper subscriptions and credit cards.
It fills in the Netek cancellation form for you: resolves the provider and service, validates your ת.ז. and address, shows you the exact request, and submits it once you say yes.
Unofficial. This project is not affiliated with, endorsed by, or supported by Netek. It talks to an undocumented API that was reverse- engineered from the site's own JavaScript, and that API can change or disappear without notice. Everything known about it is written down in
docs/api-map.md, along with the date it was last verified and the method for re-deriving it when it breaks. See Provenance for how it was found and what that implies.
Provenance
Being straight about where this came from, because it changes what you should expect from it.
Netek publishes no API. There is no developer portal, no documentation, no
OpenAPI document (/swagger, /api-docs and the usual paths all 404), and no
public statement that service.netek.co.il is meant to be called by anything
other than their own website. Nobody granted permission for this, because there
is nobody to ask.
How it was mapped. By reading the JavaScript that Netek serves to every
visitor — https://www.netek.co.il/static/ga/main.<hash>.chunk.js — and by
issuing read-only GET requests to the catalogue and autocomplete endpoints.
The endpoint list, the request payload shape, the field-name mapping and the
validation rules all came out of that bundle. No credentials were bypassed
(there are none — every endpoint is unauthenticated), no private traffic was
captured, and no account was needed.
What was deliberately not done. POST /p/request has never been called.
A success sends a real cancellation for a real person to a real company, and
there is no unsend, so it isn't something to fire a test at. Its response shape
— and the status and activation endpoints downstream of it — are therefore
marked inferred in docs/api-map.md rather than confirmed.
What this means for you. The API can be changed, restricted or switched off
at any time and nothing here would be owed a deprecation notice. That is the
normal condition of an undocumented API, not a defect in this plugin — but it
is why netek-browser-fallback
exists, filling the same form in Chrome through the supported public route when
the API stops answering. Please don't hammer the endpoints; this is built for
one person cancelling their own subscriptions, and it deliberately does not
batch.
If Netek would rather this didn't exist, open an issue and it comes down.
Install
git clone https://github.com/danielrosehill/netek-disconnect-plugin
Add it as a plugin directory in Claude Code, then:
/netek
No dependencies — the scripts are Python 3 standard library only.
Use
/netek
/netek cellcom mobile
"cancel my HOT TV subscription"
"אני רוצה להתנתק מפרטנר"
First run will ask for your details and save a profile to
~/.claude-plugins/netek/profiles/default.json (outside this repo — see
references/user-data-layout.md). After that
it reuses them.
The CLI underneath is usable on its own:
python3 scripts/netek.py providers # all 55 providers
python3 scripts/netek.py services cellcom # what can be cancelled there
python3 scripts/netek.py city ירושלים # city code
python3 scripts/netek.py street 3000 יפו # street + postcode
python3 scripts/netek.py check-id 030764534 # validate an Israeli ID
python3 scripts/netek.py build --profile … --provider cellcom \
--service "טלפון נייד" --line 050-1234567
python3 scripts/netek.py submit --profile … --provider … --service … --confirm
build never sends anything. submit refuses without --confirm.
How a cancellation actually works
- You (or Claude) submit the request to Netek.
- Netek emails you an activation link.
- You click it. Only then does the cancellation go to the provider.
- The provider processes it under Israeli consumer protection law.
Step 2 is not a formality — the request is inert until the account holder clicks. The plugin will not click it for you, and neither should anything built on this code. That link is your consent.
Scope
Does: cancellation requests, for the person operating the session, from a profile they supplied, after showing them the payload.
Doesn't: file on behalf of third parties; batch across identities; touch
Netek's /p/leads/* endpoints, which pass your details to competing providers
as a sales lead. Cancelling is not shopping, and the two are kept apart
deliberately.
Netek covers 55 providers. If yours isn't among them, the plugin says so rather
than guessing — see data/providers.json.
Your data
There is no Netek account and no Netek credential — the API is unauthenticated. What the form does need is your own identity: name, ת.ז. (or ח.פ.), address, phone, email and the last four digits of your payment card, because the provider uses those to check you are the account holder.
That lives in ~/.claude-plugins/netek/profiles/, never in this repo.
Optionally the sensitive fields can be kept in 1Password and read at submit
time instead of sitting in a JSON file — see
skills/netek-profile/SKILL.md. Nothing here
ever wants a full card number.
Layout
commands/netek.md slash command
skills/
netek-disconnect/ the main flow: build, confirm, submit
netek-browser-fallback/ fill the form in Chrome when the API breaks
netek-profile/ store and read your details (incl. 1Password)
netek-providers/ provider, service and address lookup
netek-status/ check a request by guid
scripts/
netek.py CLI: lookup, validate, build, submit
refresh_providers.py re-pull the catalogue, report drift
data/providers.json catalogue snapshot (55, 2026-07-30)
docs/api-map.md the unofficial API, and how it was derived
schema/profile.schema.json profile shape
references/user-data-layout.md where personal data lives, and why
When it breaks
Netek ships a new hashed JS bundle on every deploy, and the API is theirs to change. Two things happen, in this order:
-
You still get the cancellation done.
netek-browser-fallbackfills the same form in your own Chrome via the Chrome MCP, matching fields by their visible Hebrew labels rather than by selectors — so it survives the rebuilds that break the API. Slower and interactive, but it's the route Netek actually supports. -
Then the API gets repaired. Check catalogue drift first:
python3 scripts/refresh_providers.py --checkThen re-derive the endpoints using the recipe at the end of
docs/api-map.mdand update that file's "verified" date in the same commit.
The fallback skill asks you to record what broke while you're there. Skipping that turns a one-off repair into a permanent detour.
Licence
MIT. See LICENSE.
Use it for your own subscriptions. Israeli consumer protection law gives you the right to cancel; this is a convenience wrapper around exercising it, not legal advice.