1. 받을 주소부터 준비하세요.
훅 무전기에서 가입과 이메일 인증을 마치세요. 새 채팅 → 새 주소 만들기에서 이름을 정하고, 개인 알림은 비공개로 만드세요.
만든 대화를 열어 + → 전송 설정 보기를 누르세요. 발송 키가 포함된 GET 전송 주소를 복사합니다. 이름에 적힌 주소 공유 비밀번호는 프로그램에 넣지 않습니다.

2. 전송 파일을 두 개 만드세요.
실행 환경에 Node.js 18 이상이 필요합니다. 프로젝트 안에 scripts 폴더를 만들고 아래 파일을 넣으세요. Windows, macOS, Linux에서 같은 전송 파일을 사용합니다.
https://ohook.app/[내 주소]?auth=[사용자 발송 키]&txt=[전달 내용]https://ohook.app/[내 주소]?auth=[사용자 발송 키]&key=[채팅방 발송 키]&txt=[전달 내용]주소 종류에 맞는 실제 URL 한 줄을 scripts/hook-radio.url에 넣으세요. txt 값은 실행할 때 짧은 완료 문구로 바뀝니다.
const fs = require('node:fs');
const path = require('node:path');
const tool = process.argv[2] || 'tool';
async function main() {
// Read the local URL; never upload the prompt, transcript or hook payload.
const endpoint = fs.readFileSync(path.join(__dirname, 'hook-radio.url'), 'utf8').trim();
const url = new URL(endpoint);
if (!['https:', 'http:'].includes(url.protocol) || url.username || url.password) {
throw new Error('Invalid endpoint');
}
url.searchParams.set('txt', `${tool}: response completed`);
const response = await fetch(url, {redirect: 'error', signal: AbortSignal.timeout(5000)});
if (response.status !== 201) throw new Error(`HTTP ${response.status}`);
}
main().catch(() => {
// Do not print the private URL or retry a request that may already be stored.
process.stderr.write('Hook Radio notification could not be confirmed. Check the chat before retrying.\n');
}).finally(() => process.stdout.write('{}\n'));scripts/hook-radio.url
이 URL은 비밀값입니다. 저장소에 올리거나 AI 프롬프트에 붙이지 마세요. hook-radio.cjs는 훅의 입력이나 대화 기록을 읽어 보내지 않습니다.
3. Codex에 훅을 등록하세요.
.codex/hooks.json 파일에 아래 설정을 합쳐 주세요. 파일이 있다면 다른 설정을 덮어쓰지 마세요.
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "node scripts/hook-radio.cjs codex",
"timeout": 10
}
]
}
]
}
}프로젝트의 훅을 등록한 뒤 Codex에서 해당 훅을 검토하고 신뢰해 주세요. 설정을 바꾸면 다시 검토해야 합니다.
이 예시는 프로젝트 루트에서 실행합니다. 경로에 공백이 있거나 실행 위치가 다르면 scripts/hook-radio.cjs를 따옴표로 감싼 절대 경로로 바꾸세요. 훅은 로컬 명령을 실행하므로 내용을 확인하고 신뢰한 파일만 사용하세요.
4. 직접 전송한 뒤, 도구에서도 확인하세요.
먼저 프로젝트 루트의 터미널에서 다음 명령을 실행하세요. 이 명령은 알림 한 건을 실제로 보냅니다.
node scripts/hook-radio.cjs codex대화에 codex: response completed가 보이면 연결된 것입니다. 다음으로 도구를 다시 열어 짧은 요청을 해보세요. 응답이 끝난 뒤 두 번째 소식이 도착하는지 확인합니다. 이 소식은 응답 종료 알림이며, 코드 검사나 배포 성공을 뜻하지 않습니다.
- 직접 실행도 도착하지 않아요.
- URL이 https://ohook.app/으로 시작하는지, 알림 주소와 발송 키가 올바른지 확인하세요. 실행하는 컴퓨터나 클라우드 도구에서 ohook.app에 접속할 수 있어야 합니다.
- 직접 실행은 되는데 도구에서는 안 와요.
- 설정 파일 위치, 훅 신뢰 여부, Node.js 실행 경로를 확인하세요. 원격 실행 환경은 파일과 네트워크 접근이 따로 필요합니다.
- 401·403 또는 429가 나와요.
- 401·403은 키나 접근 권한을, 429는 요청 제한을 확인하세요. 키를 재발급했다면 URL 파일도 바꿔야 합니다. 자동 재시도는 하지 않습니다.
- 대화에는 왔는데 휴대폰 알림은 없어요.
- 설정에서 해당 기기에 알림을 연결하세요. 기기 알림 허용과 대화 주소 연결은 별개입니다.
공식 문서 확인: 2026-10-18 · Codex 훅 문서. 훅 스키마는 버전에 따라 달라질 수 있습니다. 설치한 도구에서 이벤트와 설정을 한 번 더 확인하세요.