privacy policy
what we process for the website, your account, the coding agent and the ads that fund it, why, and your rights
The short version. We store an account, a credit balance and a list of the credit movements behind it — plus, so we can tell whether earning credits actually works, a note when a request is refused because you are out, when you open the offerwall, and when an attempt there ends without credit (sections 4 and 5). We do not store your code, your prompts or the replies — for each request we record which model you used and how many tokens it consumed, never their content. Advertisers never receive any of it. The text itself is passed to the model provider to answer the request, and what they may keep is the one thing here that is not ours to promise, so section 4 sets it out rather than summarising it. Two things leave your machine without passing through us: the offerwall, which you open in your browser, and the sponsored line in the terminal, which is fetched from an ad network directly and therefore shows them your IP address the way any website would. Section 7 sets out exactly what that request contains, and the switch that stops it being made.
1. controller
Florian RappoldMaikäferstraße 3f
85551 Kirchheim bei München, Germany
Phone: +49 151 61893139
Email: info@clixad.io
2. visiting this website
- Technical server data. When you open this site our hosting provider processes data such as your IP address, the requested page, timestamp, referrer and browser identifier. This is standard web server logging, needed to deliver and secure the site.
- Aggregate visit statistics. We use Vercel Web Analytics to count page views and referrers. It sets no cookies and stores nothing on your device. Instead Vercel derives a pseudonymous visitor identifier by hashing incoming request data (such as IP address, browser identifier and requested page). That identifier is rotated at least daily, so you cannot be recognised across days or across other websites. We only ever see aggregate counts, never individual visitors.
We use no cookies, no cross-site tracking and no advertising pixels on this site, and we do not build profiles of visitors. You can read this site, and the whole blog, without an account.
3. your account
An account is created when you sign in from the command line with GitHub, using GitHub's device flow. We ask GitHub for your user id, your login name and your email address. From that we store:
- Your GitHub numeric id and login name, which is how we recognise you on the next sign-in.
-
Your email address, so we can reach you about your account. If you keep
your address private on GitHub, we never receive it; a
@users.noreply.github.complaceholder is stored instead. - An access token for your account, and your chosen default model.
- Your credit balance and the entries behind it — one row per signup bonus, earned reward, purchase, reversal and metered request, each with the amount, the reason and the time.
We never receive your GitHub password, and the permissions we request are read-only
(read:user, user:email). We cannot see your repositories through
them.
4. your code and your prompts
The agent runs on your own machine and reads the files you point it at. To answer a request it sends the conversation — your instructions, the file contents it has read, and the results of the commands it ran — through our gateway to the model provider.
- We do not store any of it, unless you rate an answer. What we write down for a request is the model id and the number of input and output tokens, because that is what a request costs. The content is held only for as long as it takes to pass it on and stream the answer back. The one exception is the next bullet, and it happens only when you say so.
- If you rate an answer, we keep that exchange. Every fiftieth turn the terminal asks whether the last answer was any good, and offers credits for either answer. If you pick one, we store the rating, the model, what you asked and what the agent replied — each side cut to about 4,000 characters. We keep it to build a set of real cases we can test future versions against, which a bare score cannot do: “71% thumbs-up” is a number to watch go down, and a question with a bad answer next to it is something we can fix. Skipping stores nothing at all — no request leaves your machine — and both answers pay the same, deliberately, because paying more for a thumbs-up would buy us thumbs-ups instead of the truth.
- If a request is refused for lack of credits, we record that it was. The request is stopped before it reaches a model, so there is nothing to meter; what we keep is your account identifier, the time, which model was asked for, your balance and what the request would have cost. Not the request itself. We keep it to see how often people run out mid-task and whether earning credits gets them going again — without it we cannot tell an empty wallet from a lost user.
- We send no account identifier with it. The request carries the conversation and the name of the model, not who you are.
- Advertisers receive none of it. Neither of the two places an advertiser is involved is given your code, your prompts or the name of your project: the offerwall is a separate page in your browser (section 5), and the sponsored line is a request that carries a category tag and an opaque token and has no field content could travel in (section 7).
Where it goes is the part worth reading properly. Requests are routed by OpenRouter, Inc., a company in the United States, to the operator of the model you selected. We have no separate data processing agreement with OpenRouter: their privacy policy (version of 6 July 2026) applies one only to customers who have signed it, and we have not. The relationship rests on those published terms, under New York law, with their servers in the United States; transfers out of the EU rest on adequacy decisions and the European Commission's standard contractual clauses.
Under that policy, OpenRouter does not use inputs or outputs to train models. It does transmit your inputs to the model provider serving the request, and those providers are separate companies with their own terms: they may retain what they receive and use it for their own purposes, which can include training. OpenRouter requires them by contract to comply with data protection law, but does not control what they do with it independently of that. Requests about data held by OpenRouter go to privacy@openrouter.ai.
Against that, here is how our own account is set. We do not permit routing to endpoints that train on request data, on paid and free endpoints alike, and we do not permit endpoints that publish prompts to public datasets. OpenRouter offers a discount in exchange for sharing request data with it; we have not taken it. Every model we offer is a paid endpoint in any case, so there is no free tier in our catalogue for that setting to reach.
One thing we deliberately do not claim. We do not restrict requests to zero-data-retention endpoints, and we do not restrict which providers may serve one. A provider can therefore still hold on to what it receives — to detect abuse, or to meet an obligation of its own — for as long as its own terms allow, even where it may not train on it. Not training on something and not keeping it are two different promises, and only the first is one we are in a position to pass on.
5. earning credits on the offerwall
Credits are earned by completing an action — a signup form or a survey — on the CPX Research offerwall, operated by Make Opinion GmbH, Elfenallee 5, 13127 Berlin, Germany. When you open the wall we hand it an internal, randomly generated account identifier (a UUID), a signature, and the email address on your account. Make Opinion GmbH uses the address to recognise the same person across their panel; when we do not send it, their own page asks you for it before a survey starts. We do not send your GitHub login or your name.
The list of surveys shown on our page is asked for on your behalf, by our server rather than by your browser. That request carries the same account identifier, signature and email address, and it also carries your IP address and your browser identifier, because Make Opinion GmbH decides which surveys are open to you from where you are and what you are browsing with — a list fetched with our server's address would offer everyone surveys for a data centre in Frankfurt. Those two are the same details they would receive directly from your browser the moment you opened one of the offers, and they are the only additional details we pass on. We do not store the list; it is held for at most two minutes so the page can be drawn, which is also the longest their own terms allow it to be kept.
Everything after that happens between you and Make Opinion GmbH on their page, under their own privacy policy: which offers you are shown, the demographic questions their partners ask, and whatever they store about your participation. They are a German company, so this part involves no transfer out of the EU on our side. We only receive the result — a transaction id, that internal identifier, the payout, and whether it credited or was charged back — and we store it so the same reward cannot be paid twice and so the daily limit can be applied.
On our side we also note, each time you set off for the wall, that you did: your account identifier, the time, which offerwall, and whether you opened the whole wall or one of the surveys listed on our page — in that second case, which survey, since we picked it and can tell. Nothing about what happens inside an offer, which we never see. We keep the two apart because the list is only worth showing if it works better than the whole wall, and recorded as one thing they cannot be compared.
Make Opinion GmbH also tells us when an attempt ended without credit — a screenout, where a few questions in you turn out not to match who the advertiser is paying for and the survey stops. We record that too: your account identifier, their transaction id, which offer it was, and the time. Not your answers to their surveys, which we never receive — our own surveys are a different arrangement, and section 6 covers them. This is the ordinary outcome of starting a survey rather than a rare one, and we would rather measure it than assume it — without it, nobody earning and everybody being screened out look identical from here. It credits nothing and moves no balance; it is kept apart from the credit records for exactly that reason.
6. answering one of our own surveys
Some surveys on the offers page are ours rather than a network’s, and this section is the exception to almost everything section 5 says. Nobody else is involved: the questions are ours, the page is on our own domain, and we receive and keep your answers. For these, we are the controller in the ordinary sense — not a party passing an identifier to somebody else.
When you open one we record that you started it and when. When you submit it we store the answers you gave, the time, whether they passed the survey’s attention check, and what was credited, against your account identifier. Answers are stored whether or not they are credited — including when a check was failed, or when the day’s budget ran out while you were typing.
Purpose and legal basis: to run the survey, credit it, and understand how people use Clixad so we can improve it. This is part of what you get an account for, so the legal basis for the answers and the credit is the contract between us, Art. 6 (1) (b) GDPR. Answering is entirely voluntary — nothing about your account changes if you never do.
Your answers never leave us as your answers. We do not sell them, and we pass no individual answer to anyone — not to an advertising network, and not to a company that sponsors a question, is considering sponsoring one, or has asked to see what our users think. What a third party is ever shown is counts and proportions across accounts, with no account identifier attached, and no free-text answer quoted where the wording could point back at whoever wrote it.
Putting several surveys together is what makes that rule necessary. On its own, “deploys on one particular cloud” says very little. Beside a team size, an employer type and who signs off on tools, it describes a person — and because every answer sits against the same account identifier, we can put them together whether we set out to or not. So we treat survey answers as personal data throughout, and we do not report a figure that rests on fewer than five accounts: below that, a proportion stops being a statistic and becomes a description of the people in it.
Answers are stored with everything else about your account and are deleted with it — see section 13.
7. the sponsored line in the terminal
While the agent is waiting for a model, the command line tool shows one dim line above the
input box. Most of the time it is our own text — a usage tip, a keyboard shortcut, what
the model you picked costs — which is built into the tool and involves no network at
all. Sometimes it is an advertisement instead, fetched from ADtention
(adtention.ai), an ad
network for terminal tools. An advertisement says so on the row itself, with
an Ad mark ahead of the text rather than after it; our own content never carries
that mark, and it is the last part of the row to be dropped on a narrow terminal.
That request goes from your machine to ADtention directly, and not through us. It used to go through our server, which would have kept your address out of it altogether; their network refuses requests coming from our server, so that arrangement does not work. The consequence is worth stating plainly rather than in a euphemism: when a sponsored line is fetched, ADtention see the connection, which in practice means your IP address — the same thing any website sees the moment you open it.
What the request carries is the whole of what it carries:
- Our publisher id, which says the impression belongs to Clixad rather than to some other application. It is the same for every user of the tool.
- One fixed category tag, which says what kind of tool this is — a developer tool used in a terminal — so the advertisement is not wildly off. It is set by us and is the same for everyone. It is never derived from your prompts, your files, your project or anything else you typed.
- An opaque token that stands in for your account, described below.
- A one-off value (a timestamp and a few random bytes) that makes each request distinguishable from the last. It identifies nothing and is not reused.
Your prompts, your code, your file contents, your paths, your repository names and your command output are not sent, and there is no field in the request they could travel in. Neither is your account identifier, your email address or your GitHub login.
The token is a one-way hash (SHA-256) of your internal account identifier, mixed with a value that we hold and that is specific to us. It is computed on our server, and the tool is handed the finished token rather than the ingredients. Two things follow, and it is worth separating them. ADtention receive the token and never the identifier, so they cannot work backwards from it to an account, and because the mixed-in value is ours, the same person appears as a different token to every other application using this network — that is what stops one being followed around. What does not follow is that the link is unknowable to us: we hold both halves, so we can recompute the token for a given account. It exists to keep you uncorrelatable to third parties, not to hide you from us.
The token is stable, deliberately, because ADtention’s own rate limits and daily caps are applied per person. A fresh token each time would defeat them.
Nothing is written to your disk for it. The tool is not a browser: there are no cookies, no local storage and no file kept on the ad network’s behalf. A line that has been fetched is held in the running program’s memory and shown again for a short window rather than fetched afresh every few seconds — which is fewer requests, not more — and it goes when you close the tool.
ADtention decide for themselves what they do with a request they receive, so for this step they are a separate controller and not a processor acting on our instructions; what they keep is governed by their own terms rather than by an agreement with us. They operate from Switzerland, which the European Commission has recognised as offering an adequate level of data protection, so no additional transfer safeguard is required — and in any case the connection is made by your computer, not by our server.
On our side, an impression is recorded only if it earns you credits. When it
does, the tool tells our server that a line was shown, and we store the same kind of row we
store for any other earning: your account identifier, the network’s identifier for that
impression, what it paid, what we credited, and the time. It appears in
clixad wallet as “sponsored line shown”. The identifier is kept for
the reason the offerwall’s is: it is what stops the same impression being paid twice.
Along with it we receive the network’s own identifier for the advertisement, which we
write to our server log and do not keep in your account records. We never receive the text of
the advertisement, and we are never told who placed it.
An impression that earns nothing — the ordinary case, since crediting is capped and paced — adds nothing to your account or to your balance. It is not silent, though, and it would be wrong to say so: the report still reaches our server, and the fact that it was refused and why is written to the server log, which is kept for the short period described in section 13.
Turning it off stops the request, not just the line. Set
CLIXAD_SPONSOR=0 for a single run, or put { "sponsor": false } in
~/.clixad/config.json to keep it off. The switch is checked before anything is
fetched, so with it off your machine never contacts the ad network at all. The line is also
silent on its own whenever output is piped or redirected, in CI, and under
NO_COLOR.
8. buying credits
Buying credits is optional and never required. Payment is handled by Stripe Payments Europe, Ltd. on Stripe's own payment page. We send Stripe only our internal account identifier and which pack you chose; the card details are entered with Stripe, and we neither see nor store them. Stripe tells us that a payment succeeded, and we store the payment's identifier, the amount and the credits granted, as the record of the transaction.
What you buy, and your right of withdrawal, are set out in the terms of service.
9. what stays on your computer
The command line tool keeps a folder at ~/.clixad: your access token, your
settings, your prompt history, and a copy of each session's conversation so you can resume
it. That folder is on your machine and is never uploaded to us. Deleting it, or running
clixad logout, removes the token from that machine.
10. the old waitlist
Before signups opened we collected email addresses on a waitlist. The form is gone, but the addresses collected then are still held. They are used for nothing except telling those people that Clixad is open, and can be deleted on request at any time.
11. purpose and legal basis
- Your account, your balance and the ledger behind it: to provide the service you signed up for, to meter what you spend, and to make sure a reward is credited once and only once. Legal basis: performance of a contract, Art. 6 (1) (b) GDPR.
- Passing your requests to the model provider: this is the service itself. Legal basis: performance of a contract, Art. 6 (1) (b) GDPR.
- Purchase records: to complete the payment, and afterwards to satisfy the retention duties that apply to accounting records. Legal bases: Art. 6 (1) (b) GDPR and, for the retention, Art. 6 (1) (c) GDPR together with German tax and commercial law.
- Server data, rate limits and abuse prevention: to operate the service securely and stably, and to stop a single account or address from draining the reward budget. Legal basis: our legitimate interest, Art. 6 (1) (f) GDPR.
- Refused requests, offerwall opens and screenouts: to understand whether the way credits are earned actually works — how often people run out mid-task, how often an attempt at the offerwall ends without credit, and whether the surveys we list are a better use of your time than the wall in full. The whole service is funded by that loop, so we need to know when it breaks. Legal basis: our legitimate interest in understanding and improving our own service, Art. 6 (1) (f) GDPR. You can object to this at any time under Art. 21 GDPR; see section 15.
-
The sponsored line: to fund the service. Advertising is what pays for the
model calls your credits are spent on. Legal basis: our legitimate interest in financing
our own service, Art. 6 (1) (f) GDPR. You can object at any time under Art. 21 GDPR, and
you do not have to write to us to do it —
CLIXAD_SPONSOR=0, or{ "sponsor": false }in the config file, stops the request being made at all. Because nothing is stored on or read from your device for it, this does not require consent under § 25 TDDDG either. - Waitlist email: to notify you once that Clixad has opened. Legal basis: your consent, Art. 6 (1) (a) GDPR, given when you submitted the form.
- Visit statistics: to understand how many people reach the site and where they come from, so we can improve it. Legal basis: our legitimate interest in a needs-based design of our website, Art. 6 (1) (f) GDPR. Because no information is stored on or read from your device, this does not require consent under § 25 TDDDG (the act renamed from TTDSG in 2024).
12. processors and hosting
We use the following service providers:
- Vercel Inc. for hosting and delivery of this website, and for the aggregate visit statistics described above.
- Supabase for the database holding accounts, balances and the credit ledger (EU region, Ireland).
- Render Services, Inc. for running the service that the command line tool talks to (EU region, Frankfurt).
- OpenRouter, Inc. for routing each request to the operator of the model you selected, on the footing set out in section 4.
- Stripe Payments Europe, Ltd. as payment service provider, if and when you buy credits.
- Make Opinion GmbH (CPX Research) as operator of the offerwall, as described in section 5.
- Mailjet, a brand of the Sinch group (Sinch AB (publ), Sweden), for sending the one email that tells waitlist subscribers that Clixad has opened, as described in section 10.
Render Services, Inc. is engaged as a processor under a data processing agreement pursuant to Art. 28 GDPR, which forms part of their terms of service. Where a provider processes data outside the EU or EEA, the transfer is safeguarded by an adequacy decision or the European Commission's standard contractual clauses.
ADtention is deliberately not in that list, and the reason is not an oversight. They do not process anything for us or on our instructions: your own machine connects to them, and what they do with that request is theirs to decide, which makes them a separate controller rather than a processor. Calling them a processor would describe a relationship that does not exist. Section 7 sets out what the request contains, what they can and cannot infer from it, and how to stop it.
13. how long we keep it
- Account data, balance and ledger: for as long as the account exists. Ask us to delete it and we will remove it without undue delay.
- Purchase records: for the statutory retention periods under German tax and commercial law, even if the account is deleted before they expire.
- Reward records: for as long as the account exists. This covers both ways of earning — an offer completed on the offerwall, and a sponsored line that earned. The transaction id has to outlive the reward itself, because it is what stops the same reward being paid twice or charged back twice.
- Refused requests, offerwall opens and screenouts: for as long as the account exists, and they go with it when it is deleted. Unlike the reward records above, nothing depends on these outliving the account — they pay nothing out and prevent nothing, so there is no reason to keep them once you are gone.
- Answers you rated: for as long as the account exists, and they go with it when it is deleted. This is the only place we hold the content of a conversation, and it is there only because you chose to put it there.
- Answers to our own surveys: for as long as the account exists, and they go with it when it is deleted. Kept whether or not they were credited, because an answer that failed a check is still an answer somebody gave us.
- Waitlist addresses: until you ask us to delete them.
- Server logs: deleted or anonymised by our hosting providers after a short retention period.
14. sharing
We do not sell your data, and nothing about your code or your prompts ever reaches an advertiser. Almost everything we pass on goes to the providers listed in section 12, on our behalf and on our instructions. Three things sit outside that sentence, and all three are better named here than left for you to find: one is something we pass on for somebody else’s purposes, and the other two are not things we pass on at all.
Your email address goes to CPX Research for their own purposes. We send it with the offerwall link and with the survey list — section 5 sets out exactly when — and Make Opinion GmbH uses it to recognise the same respondent across the publishers they serve, not only across ours. That is their purpose rather than ours, so describing it as processing on our behalf would be wrong. (Section 4 covers the other limit on that phrase: what a model provider may keep once your request reaches it.)
The sponsored line is not something we pass on at all, and that is the point. We do not send your address to the ad network; your own computer connects to them, and they see it the way any website you open sees it. What we do is ship the software that makes that connection, which is why it is written up in section 7 rather than left for you to notice, and why the switch that stops it is a switch on your machine rather than a request to us.
Beyond that, when you choose to open the offerwall you are dealing with CPX Research directly, and what you tell them there is theirs, under their own policy. We are not given it.
The answers to our own surveys are the third, and they are the one people expect us to sell. We do not. No individual answer goes to a sponsor or to anyone else, and what leaves us is aggregated across accounts and floored at five — section 6 sets out why the floor is there and what it is protecting against.
15. your rights
Under the GDPR you have the right to:
- access the data we hold about you (Art. 15)
- have inaccurate data corrected (Art. 16)
- have your data erased (Art. 17)
- restrict processing (Art. 18)
- receive your data in a portable format (Art. 20)
- object to processing based on legitimate interest (Art. 21)
- withdraw your consent at any time, with effect for the future (Art. 7 (3))
To exercise any of these, email info@clixad.io. No particular form is required. There is no self-service delete button in the tool yet, so account deletion goes through that address; write from the address on the account, or tell us your GitHub login, so we can tell which account to delete. You also have the right to lodge a complaint with a supervisory authority, in particular in the member state of your residence, place of work, or the place of the alleged infringement.
16. changes to this policy
We will update this policy when the service changes. The current version always applies and is published on this page.