안드레 카파시 바이브 코딩, 버그 우회, 랜덤 변경 | 같은 에러가 돌아와도 다시 시키면?
안드레 카파시 바이브 코딩은 모델이 못 고치면 우회하거나 랜덤 변경을 묻다가 버그가 사라질 때까지 가는 루프다. 버릴 주말 앱의 패딩에만 맞고, 카카오 콜백이나 토스 웹훅은 화면만 바뀌고 원인은 남는다. 같은 에러가 세 번이면 재현과 테스트를 남긴다. 커서, 클로드 코드, Next.js, LLM, 1인 개발자 기준. 2026년 9월 원문과 윌리슨, 파울러, 노드 테스트 문서.
버그가 화면에서만 사라지고 원인은 남는 랜덤 변경은 안드레 카파시 바이브 코딩의 버릴 주말 루프입니다. 남을 코드에서 같은 에러가 세 번 오면 우회를 멈춥니다.
주말에 패딩을 고치다 빨간 줄이 반복되면 카파시처럼 우회하거나 아무 변경이나 시키고 싶어집니다. 원문은 모델이 못 고치면 우회하거나 랜덤 변경을 묻다가 사라질 때까지 간다고 했죠. 카카오 콜백 400은 그렇게 하면 리다이렉트 주소는 그대로인데 화면만 바뀝니다.
정의와 배포, 사전, 붙여 넣기는 이미 나눠 둔 글이 있어요. 여기는 우회와 랜덤 변경 한 칸만 봅니다. 근거는 카파시 원문과 윌리슨, 파울러에 있습니다. 저는 12개 사이트를 올릴 때 같은 콜백이 두 번 오면 테스트를 먼저 남깁니다.
원문이 말한 우회는 버릴 앱 한 칸이다
우회와 랜덤 변경은 버릴 주말 앱의 속도입니다. 안드레 카파시 바이브 코딩의 그 문장은 운영 로그인을 고치는 손이 아닙니다.
2025년 2월 2일 원문은 모델이 버그를 못 고치면 우회하거나, 랜덤 변경을 묻다가 없어질 때까지 간다고 적었습니다. 패딩을 반으로 줄이다가 난 레이아웃에는 맞습니다. 카카오 리다이렉트가 로컬만 되고 프리뷰만 깨지는 자리에는 안 맞죠. 화면이 잠깐 괜찮아 보여도 콘솔에 등록한 주소는 그대로입니다.
마틴 파울러는 2026년 5월 글에서 이 원문을 통째로 옮기고, 바이브 코딩을 버릴 소프트웨어와 프로토에 가깝다고 봤습니다. 사이먼 윌리슨은 2025년 3월에, 나온 코드를 검토하지 않을 때만 바이브라고 좁혔습니다. 랜덤 변경을 수락하고 diff를 안 읽으면 그 정의 안에 있습니다.
지금 창
원문 우회
남을 코드
패딩, 키 없는 레이아웃
우회, 랜덤 변경 허용
허용. 주말에 지워도 됨
같은 에러가 세 번
원문대로면 또 시킴
재현 한 줄. 테스트 추가
카카오 콜백 400
원문이 막은 자리
리다이렉트 주소부터
토스 웹훅 서명 실패
원문이 막은 자리
서명 한 칸만. 화면 CSS 금지
원문 다섯 행동의 목록은 정의와 원문 글에 있고, 여기는 그중 우회 한 칸만 봅니다. 주말 프로토를 배포 브랜치에 넣을지는 에이전틱과 배포 비교가 가릅니다.
먼저 기억할 것 | 안드레 카파시 바이브 코딩의 우회와 랜덤 변경은 버릴 주말 앱용입니다. 인증과 결제는 화면이 괜찮아져도 원인을 남깁니다.
같은 빨간 줄이 세 번이면 랜덤 변경을 멈추고 재현을 남긴다
같은 에러가 세 번 돌아오면 뭘 멈추나
세 번째에 창을 닫고 재현 한 줄을 적습니다. 네 번째 랜덤 변경은 원인을 가립니다.
첫 실패는 붙여 넣기나 짧은 지시로 고칠 때가 많습니다. 둘째도 같은 스택이면 아직 주말 루프 안에 있어요. 셋째에 파일이 다섯 개 넘게 바뀌고 에러 문장이 같으면, 모델이 못 고치는 자리입니다. 여기서 또 시키면 CSS를 바꾸고, try를 넓히고, 빈 catch를 넣습니다. 화면은 조용해지고 콜백은 그대로 400입니다.
윌리슨은 2026년 5월에 바이브와 에이전틱이 자기 작업에서 가까워진다고 적었습니다. 그래도 구분 기준은 코드를 보느냐였습니다. 세 번 같은 줄이 오면 보는 쪽으로 옮깁니다. 커서가 만든 diff 통계만 봐도 우회인지 고침인지 갈립니다.
통계에 스타일 파일과 로그인 라우트가 같이 있으면 랜덤 변경입니다. 로그인 한 파일만 열리고 테스트가 추가되면 고침에 가깝죠. 정의 글의 다섯 행동과 달리, 여기는 멈출 횟수만 남깁니다.
세 번이면 창을 바꾼다 | 같은 스택이 세 번이면 새 지시를 멈추고, 재현 명령과 기대 값을 한 줄로 적습니다.
카카오 콜백이 사라졌다고 고친 게 아니다
화면 에러가 없어져도 리다이렉트 주소가 같으면 고친 게 아닙니다. 한국에서 혼자 올리는 서비스는 이 칸에서 자주 속습니다.
카카오 로그인 REST는 인가 코드를 받을 리다이렉트 URI를 콘솔에 등록합니다. 로컬과 버셀 프리뷰, 운영 도메인이 다르면 등록에 없는 주소로 돌아옵니다. 공식 문서도 리다이렉트 URI가 일치해야 한다고 적습니다. 에이전트에게 로그인 화면이 깨졌다고만 하면, 버튼을 숨기거나 토스트를 바꾸거나 CSS 패딩을 건드립니다. 카파시가 말한 우회와 랜덤 변경이 여기 그대로 붙습니다.
토스 웹훅 서명 실패도 같습니다. 서명 검증을 건너뛰라고 하면 화면 결제는 통과하고, 위조 콜백도 통과합니다. 제가 12개 사이트에 카카오 콜백을 붙일 때도, 프리뷰만 400이면 콘솔 등록부터 봤습니다. 레이아웃을 다시 시키지 않았어요.
Sometimes the LLMs can't fix a bug so I just work around it or ask for random changes until it goes away.
모델이 버그를 못 고치면 우회하거나, 랜덤 변경을 시키다가 없어질 때까지 간다. 안드레 카파시, 2025년 2월 2일.
이 문장은 패딩 버그를 전제로 읽습니다. 인증 콜백을 전제로 읽으면 원문이 그은 버릴 코드 선을 넘습니다. 에러를 창에 넣을 때 키가 새는 칸은 붙여 넣기와 시크릿 글이 다룹니다. 여기는 고친 척만 하는 변경만 봅니다.
콜백 화면이 조용해져도 콘솔에 등록한 주소를 먼저 본다
우회 전에 재현 한 줄과 테스트를 남긴다
기대 호스트를 테스트로 고정한 뒤에만 에이전트를 다시 엽니다. 테스트가 실패하는 한 랜덤 CSS는 통과가 아닙니다.
노드 테스트 실행기는 이름 규칙 파일을 찾아 돌립니다. 어서트는 내장 엄격 모듈입니다. 제스트를 또 깔 필요는 없습니다. 크론 스크립트 칸은 노드 테스트 글이 길고, 여기는 리다이렉트 한 줄만 남깁니다.
카카오 리다이렉트 호스트가 운영 도메인인지 고정한다
import { test } from 'node:test'
import assert from 'node:assert/strict'
function redirectHost(uri) {
return new URL(uri).host
}
test('카카오 리다이렉트 호스트가 운영과 같다', () => {
const uri = process.env.KAKAO_REDIRECT_URI
assert.ok(uri, 'KAKAO_REDIRECT_URI 가 비어 있음')
assert.equal(redirectHost(uri), 'tech.ambitstock.com')
})
로컬에서 파일을 저장한 뒤 아래 한 줄로 돕니다. 실패하면 에이전트에게 이 테스트 이름을 주고, 스타일 파일은 건드리지 말라고 적습니다.
노드 테스트 실행기로 한 파일만 돈다
node --test tests/kakao-redirect.test.mjs
테스트가 초록이어도 콘솔 등록과 환경 값이 다르면 브라우저 콜백은 그대로 실패합니다. 테스트는 저장소가 들고 있는 값을 고정할 뿐, 카카오 콘솔을 대신하지 않습니다. 콘솔 화면의 리다이렉트 URI 목록과 환경 값을 나란히 보는 일이 한 칸 더 있습니다.
테스트가 막으면 우회가 아니다 | 랜덤 변경이 테스트를 깨면 그 패치는 버그가 사라진 게 아닙니다. 창을 닫고 기대 값을 고칩니다.
랜덤 변경 diff에서 볼 세 칸
파일 수, 인증 경로, 테스트 유무 세 칸만 봅니다. 세 칸이 흩어지면 원문 우회입니다.
깃 문서는 diff가 커밋과 작업 트리의 차이를 보여 준다고 적습니다. 통계만 봐도 이번 턴이 패딩인지 콜백인지 갈립니다. 클로드 코드나 커서에서 전체 수락을 누르기 전에 이 세 줄을 봅니다.
칸
우회 신호
고침 신호
파일 수
스타일, 레이아웃, 무관한 컴포넌트
콜백 라우트 한두 파일
인증 경로
검증 삭제, 빈 catch, 버튼 숨김
리다이렉트 비교, 상태 코드
테스트
없음. 또는 스킵 추가
실패하는 테스트가 먼저 있음
프로젝트 규칙에 우회 선을 적는다
# CLAUDE.md 또는 커서 규칙 파일 예시
같은 에러가 세 번이면 랜덤 변경을 시키지 말 것.
카카오 콜백, 토스 웹훅은 CSS와 토스트로 우회하지 말 것.
실패하는 테스트를 먼저 추가하고, 그 이름만 지시할 것.
버릴 주말 앱의 패딩만 우회와 랜덤 변경을 허용.