You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
"Error: User agreement must be accepted again..." - what does that mean and how to get over this? #784
I was trying to use python-roborock to experiment with my Roborock S6 MaxV.
I installed the code and got it running (for this I had to add two more libraries (pyyaml and pyshark) before it would start up successfully) and then tried to login but only got the below error: "Error: User agreement must be accepted again..." ?!?
C:\Users\xyz\AppData\Roaming\Python\Python313\Scripts> .\roborock login --email "xyz@gmail.com"
Requesting code for xyz@gmail.com
A code has been sent to your email, please enter the code: 502730
INFO:roborock.web_api:Login failed for xyz@gmail.com with the following context: {'msg': 'user agreement version is not up-to-date', 'data': None, 'code': 3006}
ERROR:roborock.cli:Uncaught exception in command
Traceback (most recent call last):
File "C:\Users\xyz\AppData\Roaming\Python\Python313\site-packages\roborock\cli.py", line 97, in run
await func(*args, **kwargs)
File "C:\Users\xyz\AppData\Roaming\Python\Python313\site-packages\roborock\cli.py", line 334, in login
user_data = await client.code_login(code)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xyz\AppData\Roaming\Python\Python313\site-packages\roborock\web_api.py", line 431, in code_login
raise RoborockInvalidUserAgreement(
"User agreement must be accepted again - or you are attempting to use the Mi Home app account."
)
roborock.exceptions.RoborockInvalidUserAgreement: User agreement must be accepted again - or you are attempting to use the Mi Home app account.
Error: User agreement must be accepted again - or you are attempting to use the Mi Home app account.
C:\Users\xyz\AppData\Roaming\Python\Python313\Scripts>
I replaced sensitive stuff (username and email) by "xyz" in the above.
What am I missing or any idea how can I get over this error? How or where would I need to "accept the user agreement"???
changed the title [-]"Error: User agreement must be accepted again" - what does that mean and how to get over this?[/-][+]"Error: User agreement must be accepted again..." - what does that mean and how to get over this?[/+]on Mar 13, 2026
You mean the app on the mobile which I use to control my vacuum? In that I have of course already agreed long time ago. Consequently the corresponding dialog only offers to "revoke authorization", but not to agree, since I already did.
Or what other app do you mean here?
I did so, i.e. I revoked the agreement, then I logged back in, agreed to the user agreement and got a verification code emailed. I entered that and verified that I was able to access my vacuum again in the mobile app.
Next, I fired up python-roborock on my PC, I got again the message that a new verifcation code had been sent to me. I entered that and then I got the exact same error message that the "user agreement must be accepted again" (i.e. the exact same as shown in my initial append).
So, it seems, I am exactly where I was before... :-(
Upgraded to python-roborock v5.7.0 meanwhile. I revoked the license and re-agreed to it in the mobile app but still encounter the very same, i.e. after calling roborock I get:
C:\Users\xxx\AppData\Roaming\Python\Python313\Scripts> .\roborock login --email "xyz@gmail.com"
Requesting code for xyz@gmail.com
A code has been sent to your email, please enter the code: 153230
INFO:roborock.web_api:Login failed for xyz@gmail.com with the following context: {'msg': 'user agreement version is not up-to-date', 'data': None, 'code': 3006}
ERROR:roborock.cli:Uncaught exception in command
Traceback (most recent call last):
File "C:\Users\xxx\AppData\Roaming\Python\Python313\site-packages\roborock\cli.py", line 97, in run
await func(*args, **kwargs)
File "C:\Users\xxx\AppData\Roaming\Python\Python313\site-packages\roborock\cli.py", line 334, in login
user_data = await client.code_login(code)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Roaming\Python\Python313\site-packages\roborock\web_api.py", line 429, in code_login
raise RoborockInvalidUserAgreement(
"User agreement must be accepted again - or you are attempting to use the Mi Home app account."
)
roborock.exceptions.RoborockInvalidUserAgreement: User agreement must be accepted again - or you are attempting to use the Mi Home app account.
Error: User agreement must be accepted again - or you are attempting to use the Mi Home app account.
C:\Users\xxx\AppData\Roaming\Python\Python313\Scripts>
Note: I replaced my user-id and email with 'xxx' and 'xyz', resp., for privacy.
Two months later (with several updates to roborock since - meanwhile installed version 5.14.2) but I am still stuck with this "User agreement must be accepted again..."-issue (I spare you the full console output, it is EXACTLY the same as above).
Revoking and re-agreeing to the user agreement in the mobile app obviously is not the way to fix or circumvent this...
How can I get over this obstacle? Anybody able and willing to help and describe what to do?
This is a library bug, not an account state problem — which is why revoking and
re-accepting the agreement in the app cannot fix it.
The server's own message in your log says so:
{'msg': 'user agreement version is not up-to-date', 'data': None, 'code': 3006}
It is rejecting the agreement version number this library sends, not your
acceptance of it. code_login_v4 hardcodes it:
# Major and minor version are the user agreement version, we will need to see if this needs to be# dynamic https://usiot.roborock.com/api/v3/app/agreement/latest?country=US"majorVersion": 14,
"minorVersion": 0,
14 is not current on any server today, and the value differs per server and country:
Nothing you do in the app changes the constant this library sends, so the
revoke-and-re-accept advice can never clear it. Two months of retries were not
your mistake.
usiot with a non-US country still returns 14, which is likely why this
affects some users and not others.
I opened #960, which fetches the version from the endpoint already named in that
comment and falls back to the old constants if the lookup fails. Verified on a cniot account that previously failed with 3006 on every attempt — it logs in
and loads devices now.
@mmoser18 if you want to unblock yourself before that merges, you can patch your
local install directly:
Hi and thanks for analyzing this. Your analysis seems quite reasonable to me and would definitely explain why this never worked so far.
I thus patched my local installation (using the european major/minor version 15/1 as suggested) and gave it another try but this time I got a totally different error that seems to have to do with my Python installation. Since I am absolutely not a Python-guy: do you have any idea what this error re. "frozen runpy" is trying to convey to me? Is my python setup corrupted?
C:\Users\mmo\AppData\Roaming\Python\Python313\Scripts>roborock login --email ..my email here... --password "...my password here..."
Traceback (most recent call last):
File "<frozen runpy>", line 203, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "C:\Users\mmo\AppData\Roaming\Python\Python313\Scripts\roborock.exe\__main__.py", line 2, in <module>
from roborock.cli import main
ModuleNotFoundError: No module named 'roborock'
Activity
[-]"Error: User agreement must be accepted again" - what does that mean and how to get over this?[/-][+]"Error: User agreement must be accepted again..." - what does that mean and how to get over this?[/+]Lash-L commentedon Mar 13, 2026
Open up the app and accept the agreement. Roborock won't let you auth until you do
mmoser18 commentedon Mar 14, 2026
You mean the app on the mobile which I use to control my vacuum? In that I have of course already agreed long time ago. Consequently the corresponding dialog only offers to "revoke authorization", but not to agree, since I already did.
Or what other app do you mean here?
Lash-L commentedon Mar 14, 2026
You may need to:
Open your Roborock app.
Open Profile > About Us > User Agreement & Privacy Policy.
Hit Revoke authorization.
Log back in and accept the policy
mmoser18 commentedon Mar 14, 2026
I did so, i.e. I revoked the agreement, then I logged back in, agreed to the user agreement and got a verification code emailed. I entered that and verified that I was able to access my vacuum again in the mobile app.
Next, I fired up python-roborock on my PC, I got again the message that a new verifcation code had been sent to me. I entered that and then I got the exact same error message that the "user agreement must be accepted again" (i.e. the exact same as shown in my initial append).
So, it seems, I am exactly where I was before... :-(
mmoser18 commentedon Apr 10, 2026
Upgraded to python-roborock v5.7.0 meanwhile. I revoked the license and re-agreed to it in the mobile app but still encounter the very same, i.e. after calling
roborockI get:Note: I replaced my user-id and email with 'xxx' and 'xyz', resp., for privacy.
mmoser18 commentedon Jun 9, 2026
Two months later (with several updates to roborock since - meanwhile installed version 5.14.2) but I am still stuck with this "User agreement must be accepted again..."-issue (I spare you the full console output, it is EXACTLY the same as above).
Revoking and re-agreeing to the user agreement in the mobile app obviously is not the way to fix or circumvent this...
How can I get over this obstacle? Anybody able and willing to help and describe what to do?
xiaoyaner0201 commentedon Sep 15, 2026
This is a library bug, not an account state problem — which is why revoking and
re-accepting the agreement in the app cannot fix it.
The server's own message in your log says so:
It is rejecting the agreement version number this library sends, not your
acceptance of it.
code_login_v4hardcodes it:14is not current on any server today, and the value differs per server and country:majorVersion.minorVersioncountry=US)You can check it yourself:
Two things this explains:
revoke-and-re-accept advice can never clear it. Two months of retries were not
your mistake.
usiotwith a non-UScountrystill returns14, which is likely why thisaffects some users and not others.
I opened #960, which fetches the version from the endpoint already named in that
comment and falls back to the old constants if the lookup fails. Verified on a
cniotaccount that previously failed with3006on every attempt — it logs inand loads devices now.
@mmoser18 if you want to unblock yourself before that merges, you can patch your
local install directly:
Use the number from the table that matches your server —
16for a US account,15for EU (and setminorVersionto1there).mmoser18 commentedon Sep 15, 2026
Hi and thanks for analyzing this. Your analysis seems quite reasonable to me and would definitely explain why this never worked so far.
I thus patched my local installation (using the european major/minor version 15/1 as suggested) and gave it another try but this time I got a totally different error that seems to have to do with my Python installation. Since I am absolutely not a Python-guy: do you have any idea what this error re. "frozen runpy" is trying to convey to me? Is my python setup corrupted?