[{"data":1,"prerenderedAt":1881},["ShallowReactive",2],{"/pt-br/blog/claude-code-and-gitlab":3,"navigation-pt-br":1133,"banner-pt-br":1568,"footer-pt-br":1575,"blog-post-authors-pt-br-Michael Friedrich":1830,"blog-related-posts-pt-br-claude-code-and-gitlab":1845,"next-steps-pt-br":1861,"blog-share-wrapper-pt-br":1871},{"id":4,"title":5,"authors":6,"body":8,"category":1114,"date":1115,"description":1116,"extension":1117,"externalUrl":1118,"faq":1118,"featured":147,"heroImage":1119,"meta":1120,"navigation":147,"path":1121,"seo":1122,"slug":1125,"stem":1126,"tags":1127,"template":1131,"updatedDate":1118,"__hash__":1132},"blogPosts/pt-br/blog/claude-code-and-gitlab.md","Claude Code e o GitLab: três fluxos de trabalho que realmente entregam",[7],"Michael Friedrich",{"type":9,"value":10,"toc":1099},"minimark",[11,15,18,21,24,37,42,80,85,88,107,155,158,170,174,181,188,201,214,220,229,353,356,365,375,378,381,411,420,426,432,435,448,452,455,462,466,475,485,496,523,533,551,554,573,579,588,591,595,602,611,618,624,627,636,643,649,652,673,676,682,685,694,701,707,710,716,720,729,735,743,758,772,778,781,790,793,799,802,826,832,835,841,845,849,861,1007,1016,1025,1034,1038,1041,1044,1047,1058,1061,1095],[12,13,14],"p",{},"Os desenvolvedores adoram o Claude Code porque utilizá-lo é como programar em dupla com um engenheiro sênior direto no terminal ou na IDE: ele ajuda você a entender código desconhecido, propor correções e estruturar novos recursos rapidamente.",[12,16,17],{},"Contudo, há um padrão que vale observar: quanto melhores ficam as ferramentas de programação com agentes de IA para escrever código, mais o restante do ciclo de vida do software luta para acompanhar o ritmo. O backlog de bugs cresce. As taxas de falha nos pipelines crescem e as vulnerabilidades de segurança se acumulam mais rápido do que os times conseguem classificá-las. Isso mostra que programar e entregar um software não são a mesma coisa, e essa diferença entre os dois é real.",[12,19,20],{},"É neste ponto que o GitLab entra para acelerar tudo o que vem depois do Claude Code no restante do ciclo de vida do software: CI/CD, verificação de segurança, revisão de código e aprovações, tudo em um só lugar, com um fluxo auditável.",[12,22,23],{},"Este tutorial apresenta três cenários nos quais o Claude Code avança rápido na base de código, enquanto o GitLab cuida de tudo o que transforma esse código em uma mudança certificada e entregue:",[25,26,27,31,34],"ul",{},[28,29,30],"li",{},"Corrija um bug em C++ com o Claude Code e deixe que o GitLab CI/CD, a verificação de segurança e o Duo Code Review sigam a partir daí.",[28,32,33],{},"Adicione contexto do GitLab via MCP para que o Claude trabalhe a partir do tíquete real, e não apenas dos arquivos locais.",[28,35,36],{},"Use um agente externo do Claude no Duo Agent Platform para resolver o feedback de revisão de código diretamente na merge request - MR.",[38,39,41],"h2",{"id":40},"pré-requisitos","Pré-requisitos",[43,44,45,54,63,77],"ol",{},[28,46,47,53],{},[48,49,52],"a",{"href":50,"rel":51},"https://code.claude.com/docs/pt/overview",[],"Claude Code"," no terminal, configurado e em execução.",[28,55,56,57,62],{},"Um projeto GitLab com relatos de bugs e issues de proposta de recursos — por exemplo, o ",[48,58,61],{"href":59,"rel":60},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform",[],"projeto Tanuki Iot Platform",".",[28,64,65,66,71,72,62],{},"Para casos de uso específicos: o ",[48,67,70],{"href":68,"rel":69},"https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/",[],"servidor MCP do GitLab"," e o GitLab Duo Agent Platform com ",[48,73,76],{"href":74,"rel":75},"https://docs.gitlab.com/user/duo_agent_platform/agents/external/",[],"agentes externos",[28,78,79],{},"Para compilar o código: CMake, Make, gcc/clang++ para C++, Maven para Java.",[81,82,84],"h3",{"id":83},"prepare-o-projeto-gitlab","Prepare o projeto GitLab",[12,86,87],{},"Se quiser acompanhar o tutorial, você pode repetir todas as etapas aqui no seu próprio ambiente de desenvolvimento. Para isso:",[25,89,90,97,100],{},[28,91,92,93,96],{},"Importe o ",[48,94,61],{"href":59,"rel":95},[]," para o seu ambiente GitLab, incluindo todos os issues abertos.",[28,98,99],{},"Clone o projeto no seu ambiente local e navegue até ele.",[28,101,102,103,62],{},"Abra um terminal e execute o Claude Code com ",[104,105,106],"code",{},"claude",[108,109,114],"pre",{"className":110,"code":111,"language":112,"meta":113,"style":113},"language-shell shiki shiki-themes github-light","git clone https://gitlab.example.com/examplegroup/tanuki-iot-platform.git\ncd tanuki-iot-platform\n\nclaude\n","shell","",[104,115,116,132,142,149],{"__ignoreMap":113},[117,118,121,125,129],"span",{"class":119,"line":120},"line",1,[117,122,124],{"class":123},"s7eDp","git",[117,126,128],{"class":127},"sYBdl"," clone",[117,130,131],{"class":127}," https://gitlab.example.com/examplegroup/tanuki-iot-platform.git\n",[117,133,135,139],{"class":119,"line":134},2,[117,136,138],{"class":137},"sYu0t","cd",[117,140,141],{"class":127}," tanuki-iot-platform\n",[117,143,145],{"class":119,"line":144},3,[117,146,148],{"emptyLinePlaceholder":147},true,"\n",[117,150,152],{"class":119,"line":151},4,[117,153,154],{"class":123},"claude\n",[12,156,157],{},"Faça uma pergunta no prompt para saber mais sobre a finalidade do projeto.",[108,159,163],{"className":160,"code":161,"language":162,"meta":113,"style":113},"language-markdown shiki shiki-themes github-light","Sobre o que é este projeto?\n","markdown",[104,164,165],{"__ignoreMap":113},[117,166,167],{"class":119,"line":120},[117,168,161],{"class":169},"sgsFI",[38,171,173],{"id":172},"comece-a-usar-o-claude-code-com-o-gitlab","Comece a usar o Claude Code com o GitLab",[12,175,176,177,180],{},"No nosso primeiro cenário, precisamos corrigir um sensor de hardware escrito em C++. O coletor Arduino lê métricas da placa Arduino Uno R4 conectada via USB e trava quando o dispositivo ",[104,178,179],{},"/dev/ttyACM0"," não está conectado.",[12,182,183],{},[184,185],"img",{"alt":186,"src":187,"title":186},"Issue do GitLab mostrando o relato de bug do travamento do coletor IoT Arduino","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079018/itfnec4qrlldxfftwnig.png",[12,189,190,191,196,197,200],{},"Depois de ler o relato de bug no ",[48,192,195],{"href":193,"rel":194},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/work_items/4",[],"Issue 4",", inspecione o código no arquivo ",[104,198,199],{},"main.cpp",", por exemplo, usando o vim:",[108,202,204],{"className":110,"code":203,"language":112,"meta":113,"style":113},"vim sensors/arduino-iot-collector/src/main.cpp\n",[104,205,206],{"__ignoreMap":113},[117,207,208,211],{"class":119,"line":120},[117,209,210],{"class":123},"vim",[117,212,213],{"class":127}," sensors/arduino-iot-collector/src/main.cpp\n",[12,215,216],{},[184,217],{"alt":218,"src":219,"title":218},"Código-fonte do Arduino IoT Collector aberto no vim","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079018/mjof3rgdlxjy2trmgehq.png",[12,221,222,223,228],{},"Compile e execute o binário do coletor com o ",[48,224,227],{"href":225,"rel":226},"https://cmake.org/",[],"CMake"," para reproduzir o problema.",[108,230,232],{"className":110,"code":231,"language":112,"meta":113,"style":113},"cmake -S . -B build\ncmake --build build\n\n./build/arduino_iot_collector\nStarting Arduino IoT Collector Application...\nlibc++abi: terminating due to uncaught exception of type std::runtime_error: Failed to initialize Arduino temperature sensor: Arduino port not found: /dev/ttyACM0\n[1]    85289 abort      ./build/arduino_iot_collector\n",[104,233,234,251,260,264,269,287,347],{"__ignoreMap":113},[117,235,236,239,242,245,248],{"class":119,"line":120},[117,237,238],{"class":123},"cmake",[117,240,241],{"class":137}," -S",[117,243,244],{"class":127}," .",[117,246,247],{"class":137}," -B",[117,249,250],{"class":127}," build\n",[117,252,253,255,258],{"class":119,"line":134},[117,254,238],{"class":123},[117,256,257],{"class":137}," --build",[117,259,250],{"class":127},[117,261,262],{"class":119,"line":144},[117,263,148],{"emptyLinePlaceholder":147},[117,265,266],{"class":119,"line":151},[117,267,268],{"class":123},"./build/arduino_iot_collector\n",[117,270,272,275,278,281,284],{"class":119,"line":271},5,[117,273,274],{"class":123},"Starting",[117,276,277],{"class":127}," Arduino",[117,279,280],{"class":127}," IoT",[117,282,283],{"class":127}," Collector",[117,285,286],{"class":127}," Application...\n",[117,288,290,293,296,299,302,305,308,311,314,317,320,322,325,327,330,333,335,338,341,344],{"class":119,"line":289},6,[117,291,292],{"class":123},"libc++abi:",[117,294,295],{"class":127}," terminating",[117,297,298],{"class":127}," due",[117,300,301],{"class":127}," to",[117,303,304],{"class":127}," uncaught",[117,306,307],{"class":127}," exception",[117,309,310],{"class":127}," of",[117,312,313],{"class":127}," type",[117,315,316],{"class":127}," std::runtime_error:",[117,318,319],{"class":127}," Failed",[117,321,301],{"class":127},[117,323,324],{"class":127}," initialize",[117,326,277],{"class":127},[117,328,329],{"class":127}," temperature",[117,331,332],{"class":127}," sensor:",[117,334,277],{"class":127},[117,336,337],{"class":127}," port",[117,339,340],{"class":127}," not",[117,342,343],{"class":127}," found:",[117,345,346],{"class":127}," /dev/ttyACM0\n",[117,348,350],{"class":119,"line":349},7,[117,351,352],{"class":169},"[1]    85289 abort      ./build/arduino_iot_collector\n",[12,354,355],{},"Abra o Claude Code e insira o seguinte pedido:",[108,357,359],{"className":160,"code":358,"language":162,"meta":113,"style":113},"Pode me ajudar a corrigir o sensor do Arduino IoT Collector? Ele está travando.\n",[104,360,361],{"__ignoreMap":113},[117,362,363],{"class":119,"line":120},[117,364,358],{"class":169},[12,366,367,368,370,371,374],{},"O Claude Code pesquisa a base de código (codebase) e identifica o problema no arquivo ",[104,369,199],{},", que lança uma exceção ",[104,372,373],{},"std::runtime_error()",", fazendo a aplicação travar imediatamente. O comportamento esperado é registrar um erro de configuração amigável ao usuário e continuar executando a aplicação normalmente.",[12,376,377],{},"Depois de corrigir e compilar o código com sucesso, precisamos criar uma branch do Git, um commit e uma merge request para disparar os pipelines de CI/CD, a verificação de segurança e os fluxos de revisão de código.",[12,379,380],{},"Você pode usar diferentes formas de trabalhar com o Git no Claude Code:",[25,382,383,389],{},[28,384,385,386],{},"Usar um prompt: ",[104,387,388],{},"Pode me ajudar a criar uma branch do Git, fazer o commit e enviar as alterações?",[28,390,391,392,395,396,399,400,403,404,407,408,410],{},"Executar os comandos do shell: abra o prompt de comando com ",[104,393,394],{},"!",", seguido dos comandos ",[104,397,398],{},"git checkout -b fix-arduino-sensor",", ",[104,401,402],{},"git commit -avm \"...\""," e ",[104,405,406],{},"git push",". A saída do ",[104,409,406],{}," gera uma URL de criação da merge request. Clique nela para abrir o navegador e preencher o formulário.",[12,412,413,414,419],{},"Os pipelines de CI/CD são disparados na criação da MR e verificam se o build e os testes estão funcionando. A verificação de segurança garante que nenhuma vulnerabilidade nova seja introduzida. A nova MR dispara automaticamente o ",[48,415,418],{"href":416,"rel":417},"https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/code_review/",[],"GitLab Duo Code Review Flow",", que avalia a precisão da correção, de acordo com os guias de estilo de desenvolvimento e as instruções de revisão personalizadas.",[12,421,422],{},[184,423],{"alt":424,"src":425,"title":424},"Instruções personalizadas do GitLab Duo Code Review para C++","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/wasta2rqivrvrsjtw1jv.png",[12,427,428],{},[184,429],{"alt":430,"src":431,"title":430},"Comentário com feedback do GitLab Duo Code Review Flow","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/r2oalo1xwkpbmeispflo.png",[12,433,434],{},"Veja abaixo uma gravação do Claude Code, do GitLab CI/CD e do GitLab Duo Agent Platform em ação:",[436,437,440,441],"figure",{"className":438},[439],"video_container","\n  ",[442,443,447],"iframe",{"src":444,"frameBorder":445,"allowFullScreen":446},"https://www.youtube.com/embed/JH4Sae3eDpw","0","true"," ",[38,449,451],{"id":450},"corrigindo-um-bug-em-c-com-o-gitlab-mcp-no-claude-code","Corrigindo um bug em C++ com o GitLab MCP no Claude Code",[12,453,454],{},"No cenário anterior, o Claude Code pesquisou o repositório de código local e fez suposições sobre uma possível correção com base no contexto disponível. No entanto, ele não tinha conhecimento do issue do GitLab que descrevia o bug, das discussões para a sua depuração e das soluções propostas para resolver o problema em definitivo. Além disso, ele também não levou em conta o histórico de alterações de código anteriores salvas em merge requests e issues com relatos parecidos, que são parte importante do contexto do ciclo de vida do desenvolvimento de software (SDLC).",[12,456,457,458,461],{},"Para permitir a utilização desse contexto rico do SDLC do GitLab, podemos integrar o ",[48,459,70],{"href":68,"rel":460},[]," para o Claude Code.",[81,463,465],{"id":464},"configure-o-servidor-mcp-do-gitlab","Configure o servidor MCP do GitLab",[12,467,468,469,474],{},"Confirme que o servidor MCP do GitLab está ",[48,470,473],{"href":471,"rel":472},"https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/#prerequisites",[],"habilitado"," na instância ou no grupo de nível superior.",[12,476,477,478,481,482,62],{},"Abra um novo terminal e adicione o ",[48,479,70],{"href":68,"rel":480},[]," ao Claude Code usando o tipo de transporte ",[104,483,484],{},"http",[12,486,487,488,491,492,495],{},"Substitua ",[104,489,490],{},"gitlab.example.com"," pela sua instância do GitLab ou use ",[104,493,494],{},"GitLab.com",":",[108,497,499],{"className":110,"code":498,"language":112,"meta":113,"style":113},"claude mcp add --transport http GitLab https://gitlab.example.com/api/v4/mcp\n",[104,500,501],{"__ignoreMap":113},[117,502,503,505,508,511,514,517,520],{"class":119,"line":120},[117,504,106],{"class":123},[117,506,507],{"class":127}," mcp",[117,509,510],{"class":127}," add",[117,512,513],{"class":137}," --transport",[117,515,516],{"class":127}," http",[117,518,519],{"class":127}," GitLab",[117,521,522],{"class":127}," https://gitlab.example.com/api/v4/mcp\n",[12,524,525,526,528,529,532],{},"Execute ",[104,527,106],{}," em uma nova sessão do terminal e digite ",[104,530,531],{},"/mcp"," para autenticar com o servidor MCP do GitLab, usando OAuth na página do navegador que será aberta.",[108,534,536],{"className":110,"code":535,"language":112,"meta":113,"style":113},"claude\n\n/mcp\n",[104,537,538,542,546],{"__ignoreMap":113},[117,539,540],{"class":119,"line":120},[117,541,154],{"class":123},[117,543,544],{"class":119,"line":134},[117,545,148],{"emptyLinePlaceholder":147},[117,547,548],{"class":119,"line":144},[117,549,550],{"class":123},"/mcp\n",[12,552,553],{},"Para verificar a conexão, pergunte ao Claude:",[108,555,557],{"className":160,"code":556,"language":162,"meta":113,"style":113},"Quais ferramentas MCP do GitLab estão disponíveis para você?\n\nMostre a versão do servidor MCP do GitLab\n",[104,558,559,564,568],{"__ignoreMap":113},[117,560,561],{"class":119,"line":120},[117,562,563],{"class":169},"Quais ferramentas MCP do GitLab estão disponíveis para você?\n",[117,565,566],{"class":119,"line":134},[117,567,148],{"emptyLinePlaceholder":147},[117,569,570],{"class":119,"line":144},[117,571,572],{"class":169},"Mostre a versão do servidor MCP do GitLab\n",[12,574,575],{},[184,576],{"alt":577,"src":578,"title":577},"Claude Code investigando a versão do servidor MCP do GitLab","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/f2ygt6wuuvxxbpticcgt.png",[12,580,581,582,587],{},"Ao autenticar o Claude Code com o servidor MCP do GitLab, a conexão passa pelo ",[48,583,586],{"href":584,"rel":585},"https://datatracker.ietf.org/doc/html/rfc7591",[],"OAuth"," e atua com a sua identidade já existente no GitLab e não com permissões elevadas ou separadas. Na prática, isso significa que o Claude Code só consegue ver projetos, issues (tíquetes), merge requests e outros dados do GitLab que você já tem acesso, seja pela sua conta ou seja pela sua participação em projetos e grupos. Essa é uma importante barreira de proteção: o MCP amplia o contexto dentro da ferramenta de IA, mas não contorna os controles de visibilidade do GitLab nem cria um acesso mais amplo por conta própria.",[12,589,590],{},"Uma segunda barreira de proteção é a aprovação do usuário. Nesse fluxo, o Claude Code identifica a ferramenta MCP que quer chamar e pede aprovação antes de seguir adiante, para que os desenvolvedores continuem no controle sempre que um contexto externo é buscado. Em ambientes sensíveis à segurança, também vale reforçar que os times devem ficar atentos aos dados expostos nos prompts e usar o MCP principalmente com conteúdo confiável do GitLab.",[81,592,594],{"id":593},"trabalhe-em-um-issue-de-relato-de-bug","Trabalhe em um issue de relato de bug",[12,596,597,598,601],{},"Vamos buscar o contexto do issue no Claude Code referenciando o ",[48,599,195],{"href":193,"rel":600},[]," no prompt. Se você não tiver um issue no seu projeto, clone/copie o Issue 4 e ajuste o número no prompt.",[108,603,605],{"className":160,"code":604,"language":162,"meta":113,"style":113},"Pode me ajudar a corrigir o issue 4?\n",[104,606,607],{"__ignoreMap":113},[117,608,609],{"class":119,"line":120},[117,610,604],{"class":169},[12,612,613,614,617],{},"O Claude Code identifica a necessidade de chamar a ferramenta MCP ",[104,615,616],{},"get_issue"," e pede a sua aprovação, sendo que também é possível aprovar o uso futuro automaticamente.",[12,619,620],{},[184,621],{"alt":622,"src":623,"title":622},"Claude Code buscando o contexto do issue com ferramentas MCP","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079021/tj6dpxbemvvgqnbifzjy.png",[12,625,626],{},"Depois que o Claude Code buscar o contexto necessário do issue, ele começa a analisar diretamente o código-fonte em C++ do sensor. Depois de criar e verificar uma correção, você pode pedir para criar uma nova branch do Git, um commit e uma MR, caso o Claude Code ainda não o faça automaticamente.",[108,628,630],{"className":160,"code":629,"language":162,"meta":113,"style":113},"Pode criar uma nova branch do Git, fazer o commit das alterações e criar uma nova merge request?\n",[104,631,632],{"__ignoreMap":113},[117,633,634],{"class":119,"line":120},[117,635,629],{"class":169},[12,637,638,639,642],{},"O Claude Code encontra a ferramenta MCP ",[104,640,641],{},"create_merge_request"," e cuida da criação da MR diretamente, sem precisar trocar de contexto para o navegador.",[12,644,645],{},[184,646],{"alt":647,"src":648,"title":647},"Claude Code criou uma MR usando ferramentas MCP, vinculada ao Issue 4","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079021/bo41ti93yonvsy9q2gbw.png",[12,650,651],{},"No GitLab, o evento de criação da MR dispara automaticamente vários fluxos de trabalho em paralelo:",[25,653,654,657,665],{},[28,655,656],{},"pipeline de CI/CD para builds e testes automatizados",[28,658,659,660],{},"verificação de segurança com o ",[48,661,664],{"href":662,"rel":663},"https://docs.gitlab.com/user/application_security/sast/advanced_sast_cpp/",[],"Advanced SAST para C++",[28,666,667,668,672],{},"um ",[48,669,671],{"href":416,"rel":670},[],"Code Review Flow"," pelo GitLab Duo Agent Platform",[12,674,675],{},"Esses fluxos de trabalho automatizados e agênticos dentro do GitLab aceleram a entrega de software tanto quanto o Claude Code acelera o desenvolvimento com IA para a resolução de issues.",[12,677,678],{},[184,679],{"alt":680,"src":681,"title":680},"Status do pipeline de CI/CD na MR - testes e verificação de segurança","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079022/yd3kzf9yp4usdldovs1a.png",[12,683,684],{},"Você pode abrir a Merge Request no navegador ou continuar no terminal e enviar o seguinte prompt ao Claude Code:",[108,686,688],{"className":160,"code":687,"language":162,"meta":113,"style":113},"A Merge Request está sendo executada corretamente?\n",[104,689,690],{"__ignoreMap":113},[117,691,692],{"class":119,"line":120},[117,693,687],{"class":169},[12,695,696,697,700],{},"Ele vai usar a ferramenta MCP ",[104,698,699],{},"get_merge_request_pipelines"," para buscar o status do pipeline da MR, confirmando que está verde e pronto para o merge.",[12,702,703],{},[184,704],{"alt":705,"src":706,"title":705},"Claude Code buscando o status do pipeline da MR usando ferramentas MCP","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079019/s8cwcvc3r5moui2twjpd.png",[12,708,709],{},"Veja a gravação para ver como o Claude Code resolve o problema com a ajuda do servidor MCP do GitLab:",[436,711,440,713],{"className":712},[439],[442,714,447],{"src":715,"frameBorder":445,"allowFullScreen":446},"https://www.youtube.com/embed/q8XWnmdIaI0",[38,717,719],{"id":718},"claude-code-como-agente-externo-revisor","Claude Code como agente externo revisor",[12,721,722,723,728],{},"Neste último cenário, o Claude Code ajudou a implementar um novo recurso com base nos requisitos do ",[48,724,727],{"href":725,"rel":726},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/work_items/24",[],"Issue 24"," — um servidor de API Spring Boot com backend REST/Websocket. Os pipelines de CI/CD e as verificações de segurança estão OK, mas há feedback de revisão de código esperando na MR.",[12,730,731],{},[184,732],{"alt":733,"src":734,"title":733},"Feedback do GitLab Duo Code Review na MR do servidor de API Spring Boot","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079022/to7zvyrarrvcnyuuzldi.png",[12,736,737,738,742],{},"Você pode adicionar o Claude Code como parceiro de colaboração em issues, epics e MRs e resolver tarefas em conjunto. Siga a ",[48,739,741],{"href":74,"rel":740},[],"documentação de agentes externos"," para conhecer os pré-requisitos.",[12,744,745,746,749,750,754,755,62],{},"Ative o ",[104,747,748],{},"Claude Agent by GitLab"," no menu do projeto, em ",[751,752,753],"strong",{},"AI > Agents",". Anote o nome da conta de serviço para saber como mencionar ou atribuir o agente depois — ele segue o padrão: ",[104,756,757],{},"@ai-\u003Cnome-do-agente>-\u003Cnome-do-grupo-de-nível-superior>",[12,759,760,761,766,767,62],{},"Em seguida, abra a MR com o feedback de revisão de código e analise as alterações solicitadas. A captura de tela usa a ",[48,762,765],{"href":763,"rel":764},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/merge_requests/78",[],"MR 78",", e o GitLab Duo Code Review segue as ",[48,768,771],{"href":769,"rel":770},"https://docs.gitlab.com/user/duo_agent_platform/customize/review_instructions/?tab=Java",[],"instruções de revisão personalizadas para Java",[12,773,774],{},[184,775],{"alt":776,"src":777,"title":776},"Feedback do GitLab Duo Code Review Flow sobre AllowedOriginPatterns inseguro nos endpoints de API introduzidos na MR","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079039/gvgqmcnijllptvnnyyjc.png",[12,779,780],{},"Crie um novo comentário mencionando o Claude Code Agent:",[108,782,784],{"className":160,"code":783,"language":162,"meta":113,"style":113},"@ai-claude-agent-by-gitlab-\u003Cnome-do-grupo-de-nível-superior> Pode me ajudar a resolver o feedback da revisão?\n",[104,785,786],{"__ignoreMap":113},[117,787,788],{"class":119,"line":120},[117,789,783],{"class":169},[12,791,792],{},"Essa menção inicia uma nova sessão de agente em segundo plano, configurando o Claude Code Agent, que passa a trabalhar no feedback da revisão. Quando termina, ele segue as instruções para criar um commit no Git e um comentário com um resumo na MR.",[12,794,795],{},[184,796],{"alt":797,"src":798,"title":797},"Feedback do GitLab Duo Code Review resolvido pelo Claude Agent","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079038/pqy8f4xo8n0i7yvkajso.png",[12,800,801],{},"Para garantir que o desenvolvimento de software permaneça dentro das diretrizes de proteção da sua organização, seus próximos passos incluem:",[25,803,804,807,810,818],{},[28,805,806],{},"Resolver o feedback de revisão restante.",[28,808,809],{},"Revisar o aviso nos jobs do pipeline de CI/CD.",[28,811,812,813,62],{},"Revisar as possíveis vulnerabilidades de segurança, usando, por exemplo, a ",[48,814,817],{"href":815,"rel":816},"https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/agentic_sast_vulnerability_resolution/",[],"Resolução de vulnerabilidades SAST",[28,819,820,821,62],{},"Obter a aprovação da merge request de um desenvolvedor elegível, configurado como ",[48,822,825],{"href":823,"rel":824},"https://docs.gitlab.com/user/project/codeowners/",[],"Code Owner",[12,827,828],{},[184,829],{"alt":830,"src":831,"title":830},"Widgets da merge request mostrando o pipeline de CI/CD, as aprovações exigidas, os achados de segurança e o status do merge","https://res.cloudinary.com/about-gitlab-com/image/upload/v1778079039/uzegwykldauzuxucrpjf.png",[12,833,834],{},"Assista a este vídeo para aprender como o Claude Code pode ajudar com revisões como agente externo no GitLab Duo Agent Platform:",[436,836,440,838],{"className":837},[439],[442,839,447],{"src":840,"frameBorder":445,"allowFullScreen":446},"https://www.youtube.com/embed/Tw0wNet1HCc",[38,842,844],{"id":843},"dicas-para-usar-o-claude-code-com-o-gitlab","Dicas para usar o Claude Code com o GitLab",[81,846,848],{"id":847},"instruções-personalizadas","Instruções personalizadas",[12,850,851,852,855,856,495],{},"É possível instruir os agentes a compilar e testar o código antes dos commits, manter as alterações mínimas ou entender melhor a arquitetura do projeto usando uma entrada no ",[104,853,854],{},"AGENTS.md",". O Tanuki IoT Platform usa o ",[48,857,860],{"href":858,"rel":859},"https://gitlab.com/gitlab-da/use-cases/ai/gitlab-duo-agent-platform/demo-environments/tanuki-iot-platform/-/blob/main/AGENTS.md?ref_type=heads&plain=1",[],"seguinte exemplo de produção",[108,862,864],{"className":160,"code":863,"language":162,"meta":113,"style":113},"## Working with sensors\n\n### Before editing\n1. Identify the sensor directory you're working with\n2. Check for an `AGENTS.md` file in that directory\n3. Read sensor-specific instructions before making changes\n4. Follow language-specific style guides\n\n### Making changes\n- Keep changes minimal and focused on the user request\n- Do not refactor existing code unless specifically instructed\n- Preserve original code formatting\n- Only modify code necessary to solve the specific request\n\n### Creating MRs\n- Always run local builds and tests first\n- Create a new branch for changes\n- Automatically create a merge request after successful commits\n- Reference relevant issues or tasks in the MR description\n",[104,865,866,872,876,881,890,904,912,920,925,931,940,948,956,964,969,975,983,991,999],{"__ignoreMap":113},[117,867,868],{"class":119,"line":120},[117,869,871],{"class":870},"surfw","## Working with sensors\n",[117,873,874],{"class":119,"line":134},[117,875,148],{"emptyLinePlaceholder":147},[117,877,878],{"class":119,"line":144},[117,879,880],{"class":870},"### Before editing\n",[117,882,883,887],{"class":119,"line":151},[117,884,886],{"class":885},"sqxcx","1.",[117,888,889],{"class":169}," Identify the sensor directory you're working with\n",[117,891,892,895,898,901],{"class":119,"line":271},[117,893,894],{"class":885},"2.",[117,896,897],{"class":169}," Check for an ",[117,899,900],{"class":137},"`AGENTS.md`",[117,902,903],{"class":169}," file in that directory\n",[117,905,906,909],{"class":119,"line":289},[117,907,908],{"class":885},"3.",[117,910,911],{"class":169}," Read sensor-specific instructions before making changes\n",[117,913,914,917],{"class":119,"line":349},[117,915,916],{"class":885},"4.",[117,918,919],{"class":169}," Follow language-specific style guides\n",[117,921,923],{"class":119,"line":922},8,[117,924,148],{"emptyLinePlaceholder":147},[117,926,928],{"class":119,"line":927},9,[117,929,930],{"class":870},"### Making changes\n",[117,932,934,937],{"class":119,"line":933},10,[117,935,936],{"class":885},"-",[117,938,939],{"class":169}," Keep changes minimal and focused on the user request\n",[117,941,943,945],{"class":119,"line":942},11,[117,944,936],{"class":885},[117,946,947],{"class":169}," Do not refactor existing code unless specifically instructed\n",[117,949,951,953],{"class":119,"line":950},12,[117,952,936],{"class":885},[117,954,955],{"class":169}," Preserve original code formatting\n",[117,957,959,961],{"class":119,"line":958},13,[117,960,936],{"class":885},[117,962,963],{"class":169}," Only modify code necessary to solve the specific request\n",[117,965,967],{"class":119,"line":966},14,[117,968,148],{"emptyLinePlaceholder":147},[117,970,972],{"class":119,"line":971},15,[117,973,974],{"class":870},"### Creating MRs\n",[117,976,978,980],{"class":119,"line":977},16,[117,979,936],{"class":885},[117,981,982],{"class":169}," Always run local builds and tests first\n",[117,984,986,988],{"class":119,"line":985},17,[117,987,936],{"class":885},[117,989,990],{"class":169}," Create a new branch for changes\n",[117,992,994,996],{"class":119,"line":993},18,[117,995,936],{"class":885},[117,997,998],{"class":169}," Automatically create a merge request after successful commits\n",[117,1000,1002,1004],{"class":119,"line":1001},19,[117,1003,936],{"class":885},[117,1005,1006],{"class":169}," Reference relevant issues or tasks in the MR description\n",[12,1008,1009,1010,1015],{},"Essas ",[48,1011,1014],{"href":1012,"rel":1013},"https://docs.gitlab.com/user/duo_agent_platform/customize/agents_md/",[],"instruções personalizadas"," também são processadas por agentes e flows no GitLab Duo Agent Platform.",[12,1017,1018,1019,1022,1023,62],{},"O Claude Code prefere o ",[104,1020,1021],{},"CLAUDE.md",", que também pode ser apontado para o ",[104,1024,854],{},[108,1026,1028],{"className":160,"code":1027,"language":162,"meta":113,"style":113},"@AGENTS.md\n",[104,1029,1030],{"__ignoreMap":113},[117,1031,1032],{"class":119,"line":120},[117,1033,1027],{"class":169},[38,1035,1037],{"id":1036},"resumo","Resumo",[12,1039,1040],{},"As ferramentas de programação com IA tornam as equipes de desenvolvedores mais rápidas na hora de programar. Porém, escrever código e entregar software não são a mesma coisa, e essa diferença entre os dois cresce justamente porque as ferramentas são muito boas na primeira parte. Com elas, mais código é escrito, mas o backlog de bugs aumenta, as taxas de falha nos pipelines sobem e as vulnerabilidades de segurança se acumulam.",[12,1042,1043],{},"O Claude Code mantém a produtividade onde o código se localiza: entende bases de código desconhecidas, propõe correções e estrutura novos recursos rapidamente. O GitLab Duo Agent Platform é o que transforma essa velocidade — de muitos desenvolvedores em times de software de organizações empresariais — em software seguro que você realmente pode entregar e certificar em diversos marcos de release e projetos. Com o GitLab, o restante do ciclo de vida do software (como as correções no pipeline de CI/CD, a verificação de segurança, a remediação automatizada, revisão de código e muito mais, com fluxos de trabalho que mantêm humanos no controle) permite que cada ação dos agentes de IA seja rastreada e configurada para funcionar dentro das diretrizes de proteção e políticas de segurança da sua organização.",[12,1045,1046],{},"Neste tutorial, você viu três formas de unir o Claude Code e o GitLab Duo Agent Platform:",[25,1048,1049,1052,1055],{},[28,1050,1051],{},"Corrigir um bug com o Claude Code e deixar que o GitLab CI/CD, a verificação de segurança e o Duo Code Review façam o resto.",[28,1053,1054],{},"Adicionar contexto do GitLab via MCP para que o Claude trabalhe a partir do contexto real salvo no issue do GitLab, e não apenas dos arquivos locais.",[28,1056,1057],{},"Usar um agente externo com tecnologia Claude no GitLab Duo Agent Platform para resolver o feedback de revisão diretamente na MR.",[12,1059,1060],{},"O princípio se mantém o mesmo nos três casos: o Claude avança rápido, o GitLab certifica o trabalho.",[1062,1063,1064,1072,1080],"blockquote",{},[12,1065,1066,1067,62],{},"Se você ainda não usa o GitLab Duo Agent Platform, pode começar com um ",[48,1068,1071],{"href":1069,"rel":1070},"https://about.gitlab.com/pt-br/gitlab-duo-agent-platform/",[],"teste gratuito da ferramenta",[12,1073,1074,1075,62],{},"Se você já usa o GitLab no plano gratuito, pode assinar o GitLab Duo Agent Platform ",[48,1076,1079],{"href":1077,"rel":1078},"https://docs.gitlab.com/subscriptions/gitlab_credits/#for-the-free-tier-on-gitlabcom",[],"seguindo alguns passos simples",[12,1081,1082,1083,1088,1089,1094],{},"E se você já é assinante do GitLab Premium ou Ultimate, basta ",[48,1084,1087],{"href":1085,"rel":1086},"https://docs.gitlab.com/user/duo_agent_platform/turn_on_off/",[],"ativar o Duo Agent Platform"," e começar a usar os GitLab Credits ",[48,1090,1093],{"href":1091,"rel":1092},"https://docs.gitlab.com/subscriptions/gitlab_credits/#included-credits",[],"incluídos"," na sua assinatura.",[1096,1097,1098],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .surfw, html code.shiki .surfw{--shiki-default:#005CC5;--shiki-default-font-weight:bold}html pre.shiki code .sqxcx, html code.shiki .sqxcx{--shiki-default:#E36209}",{"title":113,"searchDepth":134,"depth":134,"links":1100},[1101,1104,1105,1109,1110,1113],{"id":40,"depth":134,"text":41,"children":1102},[1103],{"id":83,"depth":144,"text":84},{"id":172,"depth":134,"text":173},{"id":450,"depth":134,"text":451,"children":1106},[1107,1108],{"id":464,"depth":144,"text":465},{"id":593,"depth":144,"text":594},{"id":718,"depth":134,"text":719},{"id":843,"depth":134,"text":844,"children":1111},[1112],{"id":847,"depth":144,"text":848},{"id":1036,"depth":134,"text":1037},"ai","2026-05-06","Agentes de IA escrevem código rápido. Mas quem entrega? Veja como Claude Code e GitLab Duo Agent Platform vão do relato do bug à correção em produção.","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1778087000/qdfsf8kz6ebfnopx9v2e.png",{},"/pt-br/blog/claude-code-and-gitlab",{"config":1123,"title":5,"description":1116},{"noIndex":1124},false,"claude-code-and-gitlab","pt-br/blog/claude-code-and-gitlab",[1128,1129,1130],"AI","tutorial","product","BlogPost","fUvLqZcEhBSAtgyZoKqxqGSgU74al3DOtszpN79LiCc",{"logo":1134,"freeTrial":1139,"sales":1144,"login":1149,"items":1154,"search":1485,"minimal":1519,"duo":1538,"switchNav":1547,"pricingDeployment":1558},{"config":1135},{"href":1136,"dataGaName":1137,"dataGaLocation":1138},"/pt-br/","gitlab logo","header",{"text":1140,"config":1141},"Obtenha uma avaliação gratuita",{"href":1142,"dataGaName":1143,"dataGaLocation":1138},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br&glm_content=default-saas-trial/","free trial",{"text":1145,"config":1146},"Solicite uma demonstração",{"href":1147,"dataGaName":1148,"dataGaLocation":1138},"/pt-br/sales/?contact-topic=request-demo","sales",{"text":1150,"config":1151},"Fazer login",{"href":1152,"dataGaName":1153,"dataGaLocation":1138},"https://gitlab.com/users/sign_in/","sign in",[1155,1241,1329,1334,1409,1463],{"text":1156,"left":147,"config":1157,"menu":1159},"Plataforma",{"dataNavLevelOne":1158},"platform",{"type":1160,"link":1161,"columns":1165,"feature":1230},"lists",{"text":1162,"config":1163},"Conheça a plataforma",{"href":1164,"dataGaName":1158,"dataGaLocation":1138},"/pt-br/platform/",[1166,1189,1212],{"title":1167,"items":1168},"Execução e fluxos de trabalho",[1169,1174,1179,1184],{"text":1170,"config":1171},"CI/CD",{"href":1172,"dataGaLocation":1138,"dataGaName":1173},"/pt-br/solutions/continuous-integration/","ci/cd",{"text":1175,"config":1176},"Gerenciamento de código-fonte",{"href":1177,"dataGaLocation":1138,"dataGaName":1178},"/pt-br/solutions/source-code-management/","source code management",{"text":1180,"config":1181},"Entrega ágil",{"href":1182,"dataGaLocation":1138,"dataGaName":1183},"/pt-br/solutions/agile-delivery/","agile delivery",{"text":1185,"config":1186},"Gerenciamento de artefatos",{"href":1187,"dataGaLocation":1138,"dataGaName":1188},"/pt-br/artifact-central/","artifact management",{"title":1190,"items":1191},"Segurança e governança",[1192,1197,1202,1207],{"text":1193,"config":1194},"Testes de segurança de aplicações",{"href":1195,"dataGaLocation":1138,"dataGaName":1196},"/pt-br/solutions/application-security-testing/","application security testing",{"text":1198,"config":1199},"Governança e conformidade",{"href":1200,"dataGaLocation":1138,"dataGaName":1201},"/pt-br/solutions/software-compliance/","governance and compliance",{"text":1203,"config":1204},"Gerenciamento de segredos",{"href":1205,"dataGaLocation":1138,"dataGaName":1206},"/pt-br/gitlab-secrets-manager/","secrets management",{"text":1208,"config":1209},"Segurança da cadeia de suprimentos",{"href":1210,"dataGaLocation":1138,"dataGaName":1211},"/pt-br/solutions/supply-chain/","supply chain security",{"title":1213,"items":1214},"Contexto e IA",[1215,1220,1225],{"text":1216,"config":1217},"Orquestração agêntica",{"href":1218,"dataGaLocation":1138,"dataGaName":1219},"/pt-br/gitlab-duo-agent-platform/","agentic orchestration",{"text":1221,"config":1222},"Grafo de contexto",{"href":1223,"dataGaLocation":1138,"dataGaName":1224},"/pt-br/gitlab-orbit/","context graph",{"text":1226,"config":1227},"Visibilidade e métricas",{"href":1228,"dataGaLocation":1138,"dataGaName":1229},"/pt-br/solutions/visibility-measurement/","visibility and measurement",{"config":1231,"title":1234,"text":1235,"link":1236},{"background":1232,"textColor":1233},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1790185102/o7dn32anqcb6z8dgd3as.jpg')","#000","Por que escolher o GitLab?","Uma plataforma única que oferece velocidade e controle em todo o ciclo de vida do seu software.",{"text":1237,"config":1238},"Saiba mais",{"href":1239,"dataGaName":1240,"dataGaLocation":1138},"/pt-br/why-gitlab/","why gitlab",{"text":1242,"left":147,"config":1243,"menu":1245},"Soluções",{"dataNavLevelOne":1244},"solutions",{"type":1160,"link":1246,"columns":1250,"feature":1320},{"text":1247,"config":1248},"Confira todas as soluções",{"href":1249,"dataGaName":1244,"dataGaLocation":1138},"/pt-br/solutions/",[1251,1269,1287],{"title":1252,"items":1253},"Resultados",[1254,1259,1264],{"text":1255,"config":1256},"Modernização de DevOps",{"href":1257,"dataGaLocation":1138,"dataGaName":1258},"/pt-br/assessments/devops-modernization-assessment/","devops modernization",{"text":1260,"config":1261},"Modernização da segurança",{"href":1262,"dataGaLocation":1138,"dataGaName":1263},"/pt-br/assessments/security-modernization-assessment/","security modernization",{"text":1265,"config":1266},"Modernização da IA",{"href":1267,"dataGaLocation":1138,"dataGaName":1268},"/pt-br/assessments/ai-modernization-assessment/","ai modernization",{"title":1270,"items":1271},"Por tamanho",[1272,1277,1282],{"text":1273,"config":1274},"Enterprise",{"href":1275,"dataGaLocation":1138,"dataGaName":1276},"/pt-br/enterprise/","enterprise",{"text":1278,"config":1279},"Pequenas empresas",{"href":1280,"dataGaLocation":1138,"dataGaName":1281},"/pt-br/small-business/","small business",{"text":1283,"config":1284},"Start-ups",{"href":1285,"dataGaLocation":1138,"dataGaName":1286},"/pt-br/solutions/startups/","startups",{"title":1288,"items":1289},"Indústrias",[1290,1295,1300,1305,1310,1315],{"text":1291,"config":1292},"Serviços financeiros",{"href":1293,"dataGaLocation":1138,"dataGaName":1294},"/pt-br/solutions/finance/","financial services",{"text":1296,"config":1297},"Setor público",{"href":1298,"dataGaLocation":1138,"dataGaName":1299},"/pt-br/solutions/public-sector/","public sector",{"text":1301,"config":1302},"Telecomunicações",{"href":1303,"dataGaLocation":1138,"dataGaName":1304},"/pt-br/solutions/telecommunications/","telecommunications",{"text":1306,"config":1307},"Serviços automotivos",{"href":1308,"dataGaLocation":1138,"dataGaName":1309},"/pt-br/solutions/automotive/","automotive",{"text":1311,"config":1312},"Educação",{"href":1313,"dataGaLocation":1138,"dataGaName":1314},"/pt-br/solutions/education/","education",{"text":1316,"config":1317},"Aeroespacial",{"href":1318,"dataGaLocation":1138,"dataGaName":1319},"/pt-br/solutions/aerospace/","aerospace",{"config":1321,"title":1322,"text":1323,"link":1324},{"background":1232,"textColor":1233},"GitLab Security Standard","Saiba como fortalecer sua fábrica de software e permitir que agentes de IA conquistem autonomia, sem abrir mão da segurança.",{"text":1325,"config":1326},"Explore o padrão",{"href":1327,"dataGaName":1328,"dataGaLocation":1138},"/pt-br/gitlab-security-standard/","gitlab security standard",{"text":1330,"config":1331},"Preços",{"href":1332,"dataGaName":1333,"dataGaLocation":1138,"dataNavLevelOne":1333},"/pt-br/pricing/","pricing",{"text":1335,"config":1336,"menu":1338},"Recursos",{"dataNavLevelOne":1337},"resources",{"type":1160,"link":1339,"columns":1343,"feature":1400},{"text":1340,"config":1341},"Confira todos os recursos",{"href":1342,"dataGaName":1337,"dataGaLocation":1138},"/pt-br/resources/",[1344,1372],{"title":1345,"items":1346},"Descubra",[1347,1352,1357,1362,1367],{"text":1348,"config":1349},"Documentação",{"href":1350,"dataGaName":1351,"dataGaLocation":1138},"https://docs.gitlab.com/","docs",{"text":1353,"config":1354},"University",{"href":1355,"dataGaName":1356,"dataGaLocation":1138},"https://university.gitlab.com/","university",{"text":1358,"config":1359},"Demo Series",{"href":1360,"dataGaName":1361,"dataGaLocation":1138},"/pt-br/gitlab-technical-demo-series/","demo series",{"text":1363,"config":1364},"Demo Hub",{"href":1365,"dataGaName":1366,"dataGaLocation":1138},"/pt-br/demo-hub/","demo hub",{"text":1368,"config":1369},"Serviços",{"href":1370,"dataGaName":1371,"dataGaLocation":1138},"/pt-br/services/","services",{"title":1373,"items":1374},"Conecte-se",[1375,1380,1385,1390,1395],{"text":1376,"config":1377},"Blog",{"href":1378,"dataGaName":1379,"dataGaLocation":1138},"/pt-br/blog/","blog",{"text":1381,"config":1382},"Comunidade",{"href":1383,"dataGaName":1384,"dataGaLocation":1138},"/community/","community",{"text":1386,"config":1387},"Clientes",{"href":1388,"dataGaName":1389,"dataGaLocation":1138},"/pt-br/customers/","customers",{"text":1391,"config":1392},"Parceiros",{"href":1393,"dataGaName":1394,"dataGaLocation":1138},"/pt-br/partners/","partners",{"text":1396,"config":1397},"Eventos",{"href":1398,"dataGaName":1399,"dataGaLocation":1138},"/events/","events",{"config":1401,"title":1402,"text":1403,"link":1404},{"background":1232,"textColor":1233},"Novidades no GitLab","Acompanhe as melhorias e os recursos mais recentes.",{"text":1405,"config":1406},"Confira as novidades",{"href":1407,"dataGaName":1408,"dataGaLocation":1138},"/pt-br/whats-new/","whats new",{"text":1410,"config":1411,"menu":1413},"Empresa",{"dataNavLevelOne":1412},"company",{"type":1160,"columns":1414},[1415],{"items":1416},[1417,1422,1428,1433,1438,1443,1448,1453,1458],{"text":1418,"config":1419},"Sobre",{"href":1420,"dataGaName":1421,"dataGaLocation":1138},"/pt-br/company/","about",{"text":1423,"config":1424,"footerGa":1427},"Vagas",{"href":1425,"dataGaName":1426,"dataGaLocation":1138},"/jobs/","jobs",{"dataGaName":1426},{"text":1429,"config":1430},"Imprensa",{"href":1431,"dataGaName":1432,"dataGaLocation":1138},"/press/","press",{"text":1434,"config":1435},"Manual",{"href":1436,"dataGaName":1437,"dataGaLocation":1138},"https://handbook.gitlab.com/","handbook",{"text":1439,"config":1440},"Liderança",{"href":1441,"dataGaName":1442,"dataGaLocation":1138},"/company/team/e-group/","leadership",{"text":1444,"config":1445},"Relações com investidores",{"href":1446,"dataGaName":1447,"dataGaLocation":1138},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1449,"config":1450},"Trust Center",{"href":1451,"dataGaName":1452,"dataGaLocation":1138},"/pt-br/security/","trust center",{"text":1454,"config":1455},"AI Transparency Center",{"href":1456,"dataGaName":1457,"dataGaLocation":1138},"/pt-br/ai-transparency-center/","ai transparency center",{"text":1459,"config":1460},"Boletim informativo",{"href":1461,"dataGaName":1462,"dataGaLocation":1138},"/company/contact/#contact-forms","newsletter",{"text":1464,"config":1465,"menu":1466},"Entre em contato",{"dataNavLevelOne":1412},{"type":1160,"columns":1467},[1468],{"items":1469},[1470,1475,1480],{"text":1471,"config":1472},"Fale com a equipe de vendas",{"href":1473,"dataGaName":1474,"dataGaLocation":1138},"/pt-br/sales/","talk to sales",{"text":1476,"config":1477},"Portal de ajuda",{"href":1478,"dataGaName":1479,"dataGaLocation":1138},"https://support.gitlab.com/hc/en-us","support portal",{"text":1481,"config":1482},"Portal de clientes",{"href":1483,"dataGaName":1484,"dataGaLocation":1138},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1486,"login":1487,"suggestions":1494},"Fechar",{"text":1488,"link":1489},"Para pesquisar repositórios e projetos, faça login em",{"text":1490,"config":1491},"gitlab.com",{"href":1152,"dataGaName":1492,"dataGaLocation":1493},"search login","search",{"text":1495,"default":1496},"Sugestões",[1497,1500,1504,1506,1511,1516],{"text":1498,"config":1499},"GitLab Duo Agent Platform",{"href":1218,"dataGaName":1498,"dataGaLocation":1493},{"text":1501,"config":1502},"Sugestões de código (AI)",{"href":1218,"dataGaName":1503,"dataGaLocation":1493},"Code Suggestions (AI)",{"text":1170,"config":1505},{"href":1172,"dataGaName":1170,"dataGaLocation":1493},{"text":1507,"config":1508},"GitLab na AWS",{"href":1509,"dataGaName":1510,"dataGaLocation":1493},"/pt-br/partners/technology-partners/aws/","GitLab on AWS",{"text":1512,"config":1513},"GitLab no Google Cloud",{"href":1514,"dataGaName":1515,"dataGaLocation":1493},"/pt-br/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1234,"config":1517},{"href":1239,"dataGaName":1518,"dataGaLocation":1493},"Why GitLab?",{"freeTrial":1520,"mobileIcon":1525,"desktopIcon":1530,"secondaryButton":1533},{"text":1521,"config":1522},"Iniciar avaliação gratuita",{"href":1523,"dataGaName":1143,"dataGaLocation":1524},"https://gitlab.com/-/trials/new/","nav",{"altText":1526,"config":1527},"Ícone do GitLab",{"src":1528,"dataGaName":1529,"dataGaLocation":1524},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1526,"config":1531},{"src":1532,"dataGaName":1529,"dataGaLocation":1524},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1534,"config":1535},"Primeiros passos",{"href":1536,"dataGaName":1537,"dataGaLocation":1524},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/pt-br/get-started/","get started",{"freeTrial":1539,"mobileIcon":1543,"desktopIcon":1545},{"text":1540,"config":1541},"Saiba mais sobre o GitLab Duo",{"href":1218,"dataGaName":1542,"dataGaLocation":1524},"gitlab duo",{"altText":1526,"config":1544},{"src":1528,"dataGaName":1529,"dataGaLocation":1524},{"altText":1526,"config":1546},{"src":1532,"dataGaName":1529,"dataGaLocation":1524},{"button":1548,"mobileIcon":1553,"desktopIcon":1555},{"text":1549,"config":1550},"/switch",{"href":1551,"dataGaName":1552,"dataGaLocation":1524},"#contact","switch",{"altText":1526,"config":1554},{"src":1528,"dataGaName":1529,"dataGaLocation":1524},{"altText":1526,"config":1556},{"src":1557,"dataGaName":1529,"dataGaLocation":1524},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1559,"mobileIcon":1564,"desktopIcon":1566},{"text":1560,"config":1561},"Voltar para preços",{"href":1332,"dataGaName":1562,"dataGaLocation":1524,"icon":1563},"back to pricing","GoBack",{"altText":1526,"config":1565},{"src":1528,"dataGaName":1529,"dataGaLocation":1524},{"altText":1526,"config":1567},{"src":1532,"dataGaName":1529,"dataGaLocation":1524},{"title":1569,"button":1570,"config":1573},"GitLab Orbit chegou: a camada de contexto para agentes de IA.",{"text":1237,"config":1571},{"href":1223,"dataGaName":1572,"dataGaLocation":1138},"orbit",{"layout":1574,"disabled":1124},"release",{"data":1576},{"text":1577,"source":1578,"edit":1584,"contribute":1589,"config":1594,"items":1599,"minimal":1819},"Git é uma marca comercial da Software Freedom Conservancy e nosso uso do nome \"GitLab\" está sob licença",{"text":1579,"config":1580},"Ver a origem da página",{"href":1581,"dataGaName":1582,"dataGaLocation":1583},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1585,"config":1586},"Editar esta página",{"href":1587,"dataGaName":1588,"dataGaLocation":1583},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1590,"config":1591},"Contribua",{"href":1592,"dataGaName":1593,"dataGaLocation":1583},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1595,"facebook":1596,"youtube":1597,"linkedin":1598},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1600,1646,1703,1745,1786],{"title":1330,"links":1601,"subMenu":1616},[1602,1606,1611],{"text":1603,"config":1604},"Confira os planos",{"href":1332,"dataGaName":1605,"dataGaLocation":1583},"view plans",{"text":1607,"config":1608},"Por que escolher o GitLab Premium?",{"href":1609,"dataGaName":1610,"dataGaLocation":1583},"/pt-br/pricing/premium/","why premium",{"text":1612,"config":1613},"Por que escolher o GitLab Ultimate?",{"href":1614,"dataGaName":1615,"dataGaLocation":1583},"/pt-br/pricing/ultimate/","why ultimate",[1617],{"title":1618,"links":1619},"Entre em contato conosco",[1620,1622,1624,1626,1631,1636,1641],{"text":1471,"config":1621},{"href":1473,"dataGaName":1148,"dataGaLocation":1583},{"text":1476,"config":1623},{"href":1478,"dataGaName":1479,"dataGaLocation":1583},{"text":1481,"config":1625},{"href":1483,"dataGaName":1484,"dataGaLocation":1583},{"text":1627,"config":1628},"Status",{"href":1629,"dataGaName":1630,"dataGaLocation":1583},"https://status.gitlab.com/","status",{"text":1632,"config":1633},"Termos de uso",{"href":1634,"dataGaName":1635,"dataGaLocation":1583},"/terms/","terms of use",{"text":1637,"config":1638},"Aviso de privacidade",{"href":1639,"dataGaName":1640,"dataGaLocation":1583},"/pt-br/privacy/","privacy statement",{"text":1642,"config":1643},"Preferências de cookies",{"dataGaName":1644,"dataGaLocation":1583,"id":1645,"isOneTrustButton":147},"cookie preferences","ot-sdk-btn",{"title":1156,"links":1647,"subMenu":1660},[1648,1650,1652,1654,1656,1658],{"text":1162,"config":1649},{"href":1164,"dataGaName":1158,"dataGaLocation":1583},{"text":1216,"config":1651},{"href":1218,"dataGaName":1219,"dataGaLocation":1583},{"text":1170,"config":1653},{"href":1172,"dataGaName":1173,"dataGaLocation":1583},{"text":1221,"config":1655},{"href":1223,"dataGaName":1224,"dataGaLocation":1583},{"text":1203,"config":1657},{"href":1205,"dataGaName":1206,"dataGaLocation":1583},{"text":1234,"config":1659},{"href":1239,"dataGaName":1240,"dataGaLocation":1583},[1661],{"title":1662,"links":1663},"Tópicos",[1664,1668,1673,1678,1683,1688,1693,1698],{"text":1170,"config":1665},{"href":1666,"dataGaName":1667,"dataGaLocation":1583},"/pt-br/topics/ci-cd/","cicd",{"text":1669,"config":1670},"GitOps",{"href":1671,"dataGaName":1672,"dataGaLocation":1583},"/pt-br/topics/gitops/","gitops",{"text":1674,"config":1675},"DevOps",{"href":1676,"dataGaName":1677,"dataGaLocation":1583},"/pt-br/topics/devops/","devops",{"text":1679,"config":1680},"Controle de versão",{"href":1681,"dataGaName":1682,"dataGaLocation":1583},"/pt-br/topics/version-control/","version control",{"text":1684,"config":1685},"DevSecOps",{"href":1686,"dataGaName":1687,"dataGaLocation":1583},"/pt-br/topics/devsecops/","devsecops",{"text":1689,"config":1690},"De nuvem nativa",{"href":1691,"dataGaName":1692,"dataGaLocation":1583},"/pt-br/topics/cloud-native/","cloud native",{"text":1694,"config":1695},"IA para programação",{"href":1696,"dataGaName":1697,"dataGaLocation":1583},"/pt-br/topics/devops/ai-for-coding/","ai for coding",{"text":1699,"config":1700},"IA agêntica",{"href":1701,"dataGaName":1702,"dataGaLocation":1583},"/pt-br/topics/agentic-ai/","agentic ai",{"title":1242,"links":1704},[1705,1707,1709,1711,1713,1715,1717,1719,1721,1724,1726,1728,1730,1733,1737,1741],{"text":1255,"config":1706},{"href":1257,"dataGaName":1258,"dataGaLocation":1583},{"text":1260,"config":1708},{"href":1262,"dataGaName":1263,"dataGaLocation":1583},{"text":1265,"config":1710},{"href":1267,"dataGaName":1268,"dataGaLocation":1583},{"text":1291,"config":1712},{"href":1293,"dataGaName":1294,"dataGaLocation":1583},{"text":1296,"config":1714},{"href":1298,"dataGaName":1299,"dataGaLocation":1583},{"text":1301,"config":1716},{"href":1303,"dataGaName":1304,"dataGaLocation":1583},{"text":1306,"config":1718},{"href":1308,"dataGaName":1309,"dataGaLocation":1583},{"text":1311,"config":1720},{"href":1313,"dataGaName":1314,"dataGaLocation":1583},{"text":1722,"config":1723},"Setor aeroespacial",{"href":1318,"dataGaName":1319,"dataGaLocation":1583},{"text":1273,"config":1725},{"href":1275,"dataGaName":1276,"dataGaLocation":1583},{"text":1278,"config":1727},{"href":1280,"dataGaName":1281,"dataGaLocation":1583},{"text":1283,"config":1729},{"href":1285,"dataGaName":1286,"dataGaLocation":1583},{"text":1669,"config":1731},{"href":1732,"dataGaName":1672,"dataGaLocation":1583},"/pt-br/solutions/gitops/",{"text":1734,"config":1735},"Análise de composição de software",{"href":1210,"dataGaName":1736,"dataGaLocation":1583},"software composition analysis",{"text":1738,"config":1739},"Gestão de fluxo de valor do GitLab",{"href":1228,"dataGaName":1740,"dataGaLocation":1583},"value stream management",{"text":1742,"config":1743},"Todas as soluções",{"href":1249,"dataGaName":1744,"dataGaLocation":1583},"all solutions",{"title":1335,"links":1746},[1747,1752,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779,1782],{"text":1748,"config":1749},"Instalação",{"href":1750,"dataGaName":1751,"dataGaLocation":1583},"/pt-br/install/","install",{"text":1753,"config":1754},"Guias de início rápido",{"href":1755,"dataGaName":1756,"dataGaLocation":1583},"/pt-br/get-started/","quick setup checklists",{"text":1348,"config":1758},{"href":1350,"dataGaName":1351,"dataGaLocation":1583},{"text":1353,"config":1760},{"href":1355,"dataGaName":1356,"dataGaLocation":1583},{"text":1358,"config":1762},{"href":1360,"dataGaName":1361,"dataGaLocation":1583},{"text":1363,"config":1764},{"href":1365,"dataGaName":1366,"dataGaLocation":1583},{"text":1368,"config":1766},{"href":1370,"dataGaName":1371,"dataGaLocation":1583},{"text":1376,"config":1768},{"href":1378,"dataGaName":1379,"dataGaLocation":1583},{"text":1381,"config":1770},{"href":1383,"dataGaName":1384,"dataGaLocation":1583},{"text":1386,"config":1772},{"href":1388,"dataGaName":1389,"dataGaLocation":1583},{"text":1391,"config":1774},{"href":1393,"dataGaName":1394,"dataGaLocation":1583},{"text":1396,"config":1776},{"href":1398,"dataGaName":1399,"dataGaLocation":1583},{"text":1459,"config":1778},{"href":1461,"dataGaName":1462,"dataGaLocation":1583},{"text":1780,"config":1781},"Novidades",{"href":1407,"dataGaName":1408,"dataGaLocation":1583},{"text":1783,"config":1784},"Todos os recursos",{"href":1342,"dataGaName":1785,"dataGaLocation":1583},"all resources",{"title":1410,"links":1787},[1788,1790,1792,1794,1796,1798,1800,1802,1804,1809,1814],{"text":1418,"config":1789},{"href":1420,"dataGaName":1412,"dataGaLocation":1583},{"text":1423,"config":1791},{"href":1425,"dataGaName":1426,"dataGaLocation":1583},{"text":1429,"config":1793},{"href":1431,"dataGaName":1432,"dataGaLocation":1583},{"text":1434,"config":1795},{"href":1436,"dataGaName":1437,"dataGaLocation":1583},{"text":1439,"config":1797},{"href":1441,"dataGaName":1442,"dataGaLocation":1583},{"text":1444,"config":1799},{"href":1446,"dataGaName":1447,"dataGaLocation":1583},{"text":1449,"config":1801},{"href":1451,"dataGaName":1452,"dataGaLocation":1583},{"text":1454,"config":1803},{"href":1456,"dataGaName":1457,"dataGaLocation":1583},{"text":1805,"config":1806},"Sustentabilidade",{"href":1807,"dataGaName":1808,"dataGaLocation":1583},"/sustainability/","Sustainability",{"text":1810,"config":1811},"Diversidade, inclusão e pertencimento (DIB)",{"href":1812,"dataGaName":1813,"dataGaLocation":1583},"/pt-br/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1815,"config":1816},"Declaração de Transparência da Lei da Escravidão Moderna",{"href":1817,"dataGaName":1818,"dataGaLocation":1583},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1820},[1821,1824,1827],{"text":1822,"config":1823},"Termos",{"href":1634,"dataGaName":1635,"dataGaLocation":1583},{"text":1825,"config":1826},"Cookies",{"dataGaName":1644,"dataGaLocation":1583,"id":1645,"isOneTrustButton":147},{"text":1828,"config":1829},"Privacidade",{"href":1639,"dataGaName":1640,"dataGaLocation":1583},[1831],{"id":1832,"title":7,"body":1118,"config":1833,"content":1835,"description":1118,"extension":1839,"meta":1840,"navigation":147,"path":1841,"seo":1842,"stem":1843,"__hash__":1844},"blogAuthors/en-us/blog/authors/michael-friedrich.yml",{"template":1834},"BlogAuthor",{"name":7,"config":1836},{"headshot":1837,"ctfId":1838},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi","yml",{},"/en-us/blog/authors/michael-friedrich",{},"en-us/blog/authors/michael-friedrich","lJ-nfRIhdG49Arfrxdn1Vv4UppwD51BB13S3HwIswt4",[1846,1854],{"title":1847,"description":1848,"heroImage":1849,"category":1114,"date":1850,"authors":1851,"slug":1853,"externalUrl":1118},"Faça cada token de IA valer a pena com agentes","O custo do desenvolvimento agêntico cresce a cada tarefa. Escolha o modelo certo, reduza novas tentativas com o GitLab Orbit e controle o gasto em tempo real.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1791198675/kmajkudog4fj3xc6qfyb.png","2026-10-13",[1852],"Allie Holland","make-every-ai-credit-count",{"title":1855,"description":1856,"heroImage":1857,"category":1114,"date":1858,"authors":1859,"slug":1860,"externalUrl":1118},"Aprenda Python com ajuda da IA","Aprenda a programar em Python com este tutorial guiado junto com o GitLab Duo Code Suggestions e saiba uma nova linguagem de programação.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663918/Blog/Hero%20Images/aipower.jpg","2023-11-09",[7],"learning-python-with-a-little-help-from-ai-code-suggestions",{"header":1862,"blurb":1863,"button":1864,"secondaryButton":1869},"Comece a desenvolver mais rápido hoje","Veja o que sua equipe pode fazer com a plataforma de orquestração inteligente para DevSecOps.\n",{"text":1865,"config":1866},"Obtenha sua avaliação gratuita",{"href":1867,"dataGaName":1143,"dataGaLocation":1868},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/pt-br/","feature",{"text":1471,"config":1870},{"href":1473,"dataGaName":1148,"dataGaLocation":1868},{"header":1872,"text":1873,"button":1877,"disclaimer":1880},"Comece sua avaliação gratuita de\n\n30 dias do GitLab\n",[1874,1875,1876],"Acesso à GitLab Duo Agent Platform","Experimente nossos recursos mais avançados","Automatize tarefas complexas com IA",{"text":1140,"config":1878},{"href":1879,"dataGaName":1143,"dataGaLocation":1379},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/pt-br/blog/","Não é necessário cartão de crédito.",1791944966003]