Jakie problemy prawne generują asystenci pisania kodu i jak do tego podejść? Część II

AI programming assistant

Dziś część druga – opisująca rozwiązania. Kilka dni temu opublikowałem część pierwszą – opisującą problemy.

Jak podejść do problemów?

Problemy nr 1 i 2 – Jak chronić nasz input? Jak chronić się przed roszczeniami?

Rozwiązanie dla problemów nr 1 i 2 jest jedno – należy wybrać odpowiedniego dostawcę asystenta programowania.

Odpowiednim będzie taki dostawca, który zaoferuje nam, że:

  1. zabezpieczy nasz input przed ujawnieniem np. wdroży odpowiednie środki bezpieczeństwa;
  2. sam nie będzie korzystał z naszego inputu, w szczególności nie będzie na nim uczył swoich modeli;
  3. zadbał o to, że jego narzędzie nie generuje kodu identycznego z chronionym np. szkoląc modele jedynie na kodzie do którego ma prawa lub udostępnianego na nieograniczających licencjach open source lub skanuje generowany kod, porównując go z publicznie dostępnymi bazami;
  4. zwolni nas z odpowiedzialności za naruszenie praw osób trzecich.

Gdzie szukać takich informacji? Przede wszystkim powinny się znaleźć w warunkach korzystania z asystentów programowania. Warunki trzeba czytać bardzo uważnie, bo zawierają szerokie wyłączenia1, niespodziewane limity odpowiedzialności2 i opcje opt-out3.

Przeanalizowałem warunki 8 popularnych asystentów programowania pod kątem problemów, opisanych powyżej. Dla szukających “idealnego” dostawcy asystenta oprogramowania, przygotowałem podpowiedź w formie tabeli poniżej. 

Tabela: Porównanie warunków asystentów programowania na dzień 7.04.2025

Nazwa usługiPrawa do inputuZwolnienie z odpowiedzialności
za output
Replit (Teams)Użytkownik zachowuje prawa do inputu, Replit nie udostępnia go innym podmiotom, chyba że użytkownik udostępni dane publicznie na platformie. Replit nie wykorzystuje inputu do nauki, chyba że input jest udostępniony publicznie na platformie.Tak, pod pewnymi warunkami. Tylko w wersji płatnej – usługa Teams.
GitlabUżytkownik zachowuje prawa do inputu. Użytkownik udziela licencji na korzystanie z inputu wyłącznie w zakresie niezbędnym do świadczenia przez Gitlab usług na jego rzecz (Gitlab nie wykorzystuje inputu do nauki). Input jest uznawany za informację poufną.Tak, pod pewnymi warunkami, tylko dla odpłatnych usług.
GitHub CopilotUżytkownik zachowuje prawa do inputu, użytkownik udziela standardowych licencji do kodu, który publikuje na platformie.Usługa GitHub nie używa danych funkcji Copilot Business ani Copilot Enterprise do trenowania swoich modeli. Input jest uznawany za informację poufną. Tak, w ramach subskrypcji Business i Enterprise4
CursorUżytkownik zachowuje prawa do inputu, input może być wykorzystany do nauki, jeżeli wyłączony zostanie domyślny “Privacy Mode”.Wyłączenie wszelkiej odpowiedzialności za output.
Gemini Code AssistUżytkownik zachowuje prawa do inputu, Google nie trenuje swoich modeli z wykorzystaniem inputu bez zgody użytkownika.Tak, pod pewnymi warunkami, tylko dla odpłatnych usług.
Amazon QUżytkownik zachowuje prawa, ale AWS może wykorzystywać input i output, chyba,że użytkownik korzysta z opcji opt-out.Tak, pod pewnymi warunkami, tylko dla odpłatnych usług.
CodeiumUżytkownik zachowuje prawa do inputu, udziela podstawowych licencji na potrzeby świadczenia usług. Dostawca może korzystać z inputu do uczenia modeli, ale w wersji pro można skorzystać z opcji opt-out.Wyłączenie wszelkiej odpowiedzialności za output.
Tabnine Użytkownik zachowuje prawa do inputu. Tabnine nie wykorzystuje inputu do innych celów niż świadczenie usług.Wyłączona wszelka odpowiedzialność za output, ale można uzyskać dodatkowe gwarancje.5

Więcej o oferowanych zwolnieniach z odpowiedzialności (copyright commitments itd.)

Większość dostawców przeanalizowanych narzędzi zobowiązuje się, pod pewnymi warunkami, że korzystanie z wygenerowanego przez ich narzędzie kodu nie będzie naruszać cudzych praw (w tym gronie Replit, Gitlab, GitHub, Gemini code assist, Amazon Q). Jeżeli okaże się inaczej, dostawcy zobowiązują się uchronić użytkowników przed roszczeniami ze strony uprawnionych do oryginalnego kodu, który output powiela. Takie zobowiązania noszą nazwę klauzul indemnifikacyjnych (ang. indemnity).

Ochrona oferowana jest najczęściej pod warunkiem odpłatnego korzystania z usług. W przypadku nieodpłatnego korzystania ochrona nie obowiązuje.

Oferowana ochrona może być jednak istotnie ograniczona przez szczegółowe warunki np. Replit pokrywa roszczenia osób trzecich tylko do wysokości opłat uiszczonych w okresie 12 miesięcy przed “dniem incydentu” (nie precyzując co to znaczy).

Niektórzy dostawcy wyłączają jednak wszelką odpowiedzialność za dostarczany w ramach outputu kod (Coursor, Codeium),  ewentualnie zapewniają ochronę jedynie jako dodatek (Tabnine).

Ciekawe rozwiązania oferuje Tabnine. Jak wspomniałem zasadniczo nie zobowiązuje się do ochrony, jednak można indywidualnie uzgodnić dodatkową ochronę. Co ciekawe usługa Tabnine opiera się na modelach wyuczonych na podstawie kodu dostępnego publicznie na nieograniczających licencjach open-source. Ponadto oferuje opcję skanowania wygenerowanego kodu pod kątem jego podobieństwa do kodu publicznie dostępnego na GitHub, aby móc sprawdzić,pod jaką licencję open source może podpadać wygenerowany kod.

Do zastrzeżeń dorzucę jeszcze jedno istotne zastrzeżenie – warunki wskazują jako właściwe obce prawo i obce sądy. Jeżeli chcielibyście faktycznie dochodzić roszczeń od dostawców narzędzi, to przyjdzie się sądzić w obcym kraju i pod obcym prawem.

Problem nr 3 – Jak chronić oprogramowanie, które składa się z wygenerowanego kodu?

Musimy odróżnić dwa przypadki (chociaż granica między nimi może nie być aż tak wyraźna). Pierwszy przypadek używamy asystenta programowania właśnie jako asystenta, który podpowiada, ale to my tworzymy ostateczną wersję kodu. Drugi przypadek, który możemy nazwać “vibe coding”, występuje kiedy większość pracy wykonuje za nas asystent programowania.

Im bardziej kod zaproponowany przez asystenta edytujemy i dostosowujemy, tym bardziej staje się on “nasz” i tym większa szansa, że zostanie uznany za utwór, a więc również chroniony prawem autorskim.

Dalej, jeżeli połączymy wygenerowany kod z elementami, do których prawa mamy, a nasz program nie może bez tych drugich elementów funkcjonować, to nadal będziemy chronieni prawnie przed nieupoważnionym wykorzystaniem naszego programu w całości.

Przykład: w naszym programie do analizy dokumentów przeplatamy elementy twórcze i wygenerowane z użyciem asystenta programowania. Klient,u którego wdrożyliśmy program zaczyna samodzielnie sprzedawać kopie naszego programu. Narusza nasze prawa do elementów nie wygenerowanych (twórczych i chronionych), więc możemy zakazać mu korzystania z całości programu.

Co jeżeli role rozkładają się inaczej i jesteśmy bardziej product ownerem, który opisuje swoje potrzeby, a tworzeniem kodu zajmuje się asystent programowania? 

Pozostaje nam możliwość udostępniania oprogramowania w modelu SaaS, gdzie nie przekazujemy kodów źródłowych do klienta. W podanym przykładzie możemy wykorzystać przepisy o zwalczaniu nieuczciwej konkurencji6 lub przepisy o ochronie znaków towarowych7.

Wnioski

Asystenci programowania do niewątpliwa pomoc. Aby nie okazała się ona niedźwiedzią przysługą trzeba zabezpieczyć się przed problemami jakie mogą z niej wynikać. 

Kluczowym jest przy tym wybór dostawcy asystenta programowania – takiego, który zadba o poufność przekazanych mu danych i gwarantuje, że wygenerowany kod nie będzie naruszał cudzych praw. 

Warto też pamiętać o tym, że do wygenerowanego, nietkniętego przez nas kodu nie przysługują nam prawa autorskie. Im bardziej sugerowany przez asystenta kod edytujemy i dostosowujemy, tym bardziej staje się on “nasz” i tym większa szansa, że będzie chroniony prawem autorskim. Im bardziej polegamy na asystencie, tym szansa ta się zmniejsza, a ochrony “naszego” kodu musimy szukać w rozwiązaniach SaaS, przepisach o zwalczaniu nieuczciwej konkurencji lub znakach towarowych.

Jeżeli ciekawi Cię temat, którego nie opisałem albo masz dodatkowe pytania, napisz do mnie. Możesz też sprawdzić bazę wiedzy Kancelarii JDP.

Zastrzeżenie:

Wpis w żadnej mierze nie stanowi opinii ani innej porady prawnej. Takie wymagałyby zbadania konkretnej sprawy i konkretnych warunków umów jakie zostały lub mają zostać zawarte. W szczególności należałoby zbadać warunki wyłączeń odpowiedzialności dostawców.

  1. Przykładowe wyłączenia GitHub Copilot od Microsoft: https://www.microsoft.com/licensing/terms/product/ForallOnlineServices/all#:~:text=.-,Customer%20Copyright%20Commitment,that%20is%20the%20subject%20of%20the%20claim.,-Dataverse%20%C2%A0%F0%9F%94%97 ↩︎
  2. Z warunków korzystania z Replit (dostępne tutaj:https://replit.com/teams-agreement): “The maximum, aggregate liability of Replit under this Agreement is limited to direct damages finally awarded in an amount not to exceed the amount that Customer paid for the Platform during the twelve months before the incident.”. ↩︎
  3. Z warunków korzystania z Amazon Q (dostępne tutaj https://aws.amazon.com/service-terms/#:~:text=50.3.%C2%A0You,applicable%20service%20documentation): “50.3. You may instruct AWS not to use and store AI Content processed by an AI Service to develop and improve that Service or technologies of AWS or its affiliates by configuring an AI services opt-out policy using AWS Organizations.”. ↩︎
  4. Ryzyko naruszeń jest zmniejszone przez to, że Funkcja GitHub Copilot jest obsługiwana przez modele generatywnej AI opracowane przez platformę GitHub, firmy OpenAI i Microsoft. Została ona przeszkolona na bazie tekstu języka naturalnego i kodu źródłowego z publicznie dostępnych źródeł, w tym kodu w repozytoriach publicznych w usłudze GitHub. ↩︎
  5. Tabnine weryfikuje, czy kod nie pojawia się w dostępnych publicznie repozytoriach GitHub i posiada własny model przeszkolony na kodzie ogólnodostępnym. ↩︎
  6. Wykorzystując klauzulę generalną z art. 3 ustawy o zwalczaniu nieuczciwej konkurencji (UZNK), ponieważ art. 13 UZNK stosuje się do produktów fizycznych. ↩︎
  7. Pośrednio, ponieważ chronione jest oznaczenie, a nie sam program. Gdyby w naszym przykładzie nieuczciwy klient sprzedawał nasz program pod zupełnie inną marką, przepisy o ochronie znaków towarowych nie byłyby przydatne. ↩︎

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *