LibreFang 2026.7.21 출시
요약
LibreFang 2026.7.21 버전이 출시되었습니다. 이번 업데이트는 다중 사용자 환경에서의 데이터 격리 및 보안 강화, MCP 통합 확장, 그리고 개발자 편의성을 위한 다양한 기능 개선을 포함합니다.
핵심 포인트
- 사용자별 LLM API 키 관리 및 예산 강제 기능 추가
- 지식 그래프 분할을 통한 사용자 간 데이터 유출 방지
- MCP 리소스 프리미티브 지원으로 에이전트 통합 완성
- Slack 실시간 진행 상황 표시 등 개발자 경험 개선
- Gemini 및 Vertex AI의 response_format 지원 확대
LibreFang 2026.7.21 출시
v2026.7.11 이후 4명의 기여자로부터 61개의 PR (Pull Requests)이 반영되었습니다.
새로운 기능
이번 릴리스는 중요한 보안 개선 사항, 다중 사용자 격리(multi-user isolation) 수정, 그리고 **강력한 자격 증명 관리(credential management)**를 제공하며, 동시에 MCP 통합을 확장하고 대시보드 전반에 걸쳐 편의성(quality-of-life) 개선 사항을 배포합니다.
🔐 보안 및 다중 사용자 데이터 격리
여러 사용자와 함께 LibreFang을 실행하거나 공유 인프라에서 실행하는 경우, 이 부분을 주의 깊게 확인하십시오.
- 사용자별 LLM 제공자 자격 증명 (Per-user LLM provider credentials) — 이제 사용자가 자신의 API 키를 직접 가져올 수 있으며, 소유자별 지출 추적 기능이 투명하게 제공됩니다. 운영자는 조직 전체의 제공자 허용 목록(allowlists)을 설정하고 API 수준에서 사용자별 예산을 강제할 수 있습니다.
- 사용자별 지식 그래프 범위 지정 (Knowledge graph per-user scoping) — 사용자 간 데이터 유출 문제를 수정했습니다. 이제 다중 사용자 에이전트에서 지식 그래프가 사용자별로 분할되어, 공유 에이전트가 한 사용자의 메모리를 다른 사용자에게 노출하지 않도록 보장합니다.
- 계정 간 채널 가드 (Cross-account channel guards) — MCP 브릿지를 통해 권한이 없는 에이전트의 채널 전송을 방지하도록 강제합니다.
- 세션 소유 압축 요약 (Session-owned compacted summaries) — 사용자 세션 간의 프롬프트 유출을 방지합니다.
- 4단계 보안 감사 (Four-pass security audit) — 권한 부여 공백부터 토큰 할당량 경합(token-quota races)에 이르기까지 15개 이상의 버그를 발견하고 수정했습니다.
🚀 더 나은 개발자 경험
- MCP 리소스 프리미티브 (MCP resources primitive) — 이제 에이전트가 MCP로 노출된 리소스에 접근할 수 있어, 도구(tools)를 넘어선 MCP 통합을 완성했습니다.
- 긴 작업에 대한 Slack 실시간 진행 상황 표시 — 오래 걸리는 에이전트 작업은 이제 Block Kit 메시지 편집을 사용하여 Slack에 실시간 단계 업데이트를 게시하므로, 사용자는 단일 최종 답변을 기다리는 대신 진행 상황을 확인할 수 있습니다.
- HAND.toml 온라인 편집 — 대시보드의 Hands 패널에서 직접 hand 매니페스트를 편집할 수 있습니다. 별도의 파일 편집이 필요하지 않습니다.
- 확장된 전달 대상 채널 프리셋 (Expanded delivery-target channel presets) — 모든 사이드카 어댑터(sidecar adapters)가 일반적인 대상을 위한 단축 프리셋을 지원합니다.
🛠️ 인프라 및 제공자 견고성
- 멀티 프로바이더 (Multi-provider) 개선 — Gemini 및 Vertex AI에 대한 response_format 지원을 추가했습니다. 빌드 타임 폴백 (build-time fallback) 기능이 포함된 라이브 모델 카탈로그 (live model catalog) 사용을 권장합니다.
- 토큰 할당량 (Token quota) 안전성 — 자체적인 할당량 DoS (Denial of Service)를 방지하기 위해, 드롭 시 예약(reservations)을 해제합니다.
- 프로바이더 별칭 (Provider alias) 안전성 — 과금 누출 (chargeback leaks)을 차단하기 위해, 사용자별 키 조회 전 프로바이더를 정규화 (Canonicalize) 합니다.
- 에러 가시성 개선 — 깨지거나 빈 턴 (turns) 대신 스트림 중간에 발생하는 프로바이더 에러를 노출합니다.
추가 사항 (Added)
- 스트리밍 경로를 위한 환경 변수 옵트아웃 (Env opt-out, TELEGRAM_STREAMING) (#6482) (@houko)
- 소유자별 사용량 귀속 (usage attribution) 기능이 포함된 사용자별 LLM 프로바이더 자격 증명 (초기 단계) (#6483) (@houko)
- 조직 단위 LLM 프로바이더 허용 목록 (Org-wide LLM provider allowlist, 드라이버 해석 시 fail-closed 방식 적용) (#6484) (@houko)
- AgentPhase 기반의 Block Kit 업데이트를 통한 Slack 다단계 진행 상황 표시 (#6487) (@houko)
- 사용자별 귀속 설문 조사 + 감사 쿼리 (audit queries)의 API 레벨 사용자 필터링 (#6488) (@houko)
- 비동기 작업 트래커 (async task tracker)를 통한 process_start 완료 알림 (#6489) (@houko)
- Hands 패널에서 온라인으로 HAND.toml 편집 (#6490) (@houko)
- 멀티 유저 에이전트에서 사용자별 (peer_id) 지식 그래프 (knowledge graph) 범위 지정 (#6494) (#6502) (@houko)
- 모든 사이드카 어댑터 (sidecar adapters)로 전달 대상 채널 프리셋 확장 (#6506) (@houko)
- 사용자별 프로바이더 자격 증명에 대한 소유자 제한 CRUD (Owner-gated CRUD) (#6460) (#6509) (@houko)
- MCP 리소스 프리미티브 (resources primitive) 구현 (#6501) (#6532) (@houko)
수정 사항 (Fixed)
-
빌드 폴백 (build fallback) 기능이 포함된 라이브 모델 카탈로그 우선 사용 (#6384) (@pavver)
-
저장소 전반의 감사 (audit)를 통한 보안 및 정확성 강화 (#6438) (@houko)
-
저장소 전반의 감사 (audit)를 통한 2차 보안 및 정확성 강화 (#6439) (@houko)
-
저장소 전반의 감사 (audit)를 통한 3차 보안 및 정확성 강화 (#6441) (@houko)
-
저장소 전반의 감사 (audit)를 통한 4차 보안 및 정확성 강화 (#6446) (@houko)
-
보고된 4개의 버그 해결 (#6423, #6442, #6443, #6444) (#6449) (@houko)
-
/mcp 브릿지를 통한 계정 간 channel_send 가드 강제 적용 (#6443) (#6455) (@houko)
-
sandbox_command 내 운영자 환경 허용 목록 (allowlist) 신뢰 (#6465) (@houko)
-
은퇴한 pnpm audit 엔드포인트를 의존성 문제가 아닌 건너뛰기 (skip)로 처리 (#6466) (@houko)
-
dm_policy/group_policy의 필드 범위 (field-scope)를 지정하여 부분적 오버라이드 시 그룹 차단이 조용히 중단되도록 하고, 이를 [sidecar_channels]에 노출 (#6468) (@houko)
-
컨텍스트 (context)와 예산 (budget) 제한 구분 (#6479) (@houko)
-
CSP 하에서 대시보드 로그인 스크립트 허용 (#6480) (@houko)
-
auto_dream fork 도구 호출을 시스템 내부 호출로 취급하여 RBAC가 이를 차단하지 않도록 처리 (#6485) (@houko)
-
라이트 테마에서 로그인 페이지를 읽을 수 없는 문제 (CSS 캐스케이드 소스 순서 버그) 해결 (#6486) (@houko)
-
Windows에서 CSP-hash 테스트를 통과할 수 있도록 login_page.html을 LF에 고정 (#6481) (#6496) (@houko)
-
사용자 간 프롬프트 유출을 방지하기 위해 소유 세션에 의해 압축된 요약 (compacted summary)을 제어 (#6493) (#6497) (@houko)
-
에이전트별 tool_allowlist/tool_blocklist에서 glob 패턴 준수 (#6495) (#6498) (@houko)
-
승인 목록에서 415개의 허위 성공 (false-success) 및 상태 열 승인 (#6492) (#6500) (@houko)
-
긴 숫자 ID를 포함하는 MCP 인자 (arguments)의 과도한 차단 중단 (#6499) (#6503) (@houko)
-
승인 후 답장을 계정 자격이 부여된 아웃바운드 (outbound)를 통해 라우팅 (#6492) (#6511) (@houko)
-
빈 값이나 깨진 턴 (turns) 대신 스트림 중간의 프로바이더 (provider) 에러를 표시 (#6512) (@houko)
-
할당량 자체 DoS를 방지하기 위해 드롭 (drop) 시 토큰 예약 해제 (#6513) (@houko)
-
인증된 API 턴(turn)에서 속성 소유자 키(Attribute owner-key) 지출을 반영하고 사용자별 예산(per-user budget) 강제 적용 (#6514) (@houko)
-
Gemini 및 Vertex AI 드라이버에서 response_format 준수 (#6515) (@houko)
-
[browser] 설정 재로드(config-reload)를 잘못된 핫 리로드(hot-reload)가 아닌 재시작 필요(restart-required)로 처리 (#6516) (@houko)
-
별칭 차지백 누출(alias chargeback leak)을 방지하기 위해 사용자별 키 조회 전 프로바이더(provider)를 정규화(Canonicalize) (#6517) (@houko)
-
유실된 업데이트 경합(lost-update race)을 방지하기 위해 에이전트별 잠금(per-agent lock)에 정규 세션(canonical-session) 재정의를 직렬화 (#6518) (@houko)
-
MCP knowledge_add_* 쓰기 범위를 agent_id=""가 아닌 호출 에이전트(calling agent)로 제한 (#6519) (@houko)
-
불렛 포인트(bullet)의 연속 줄에서 CHANGELOG 귀속(attribution) 인식 (#6520) (@houko)
-
공유 엔티티(shared entity)의 첫 번째 작성자(first-writer)를 삭제할 때 다른 에이전트의 관계를 고아(orphan) 상태로 만들지 않음 (#6522) (@houko)
-
auto_approve를 준수하고 중복 해결(double-resolve) 시 409 반환 (#6492) (#6528) (@houko)
-
모든 파일 유형에 대해 디스크 업로드 경로(on-disk upload path)를 에이전트에 노출 (#6531) (@neo-wanderer)
Changed
- 디스크 업로드 명명 규칙을 .으로 정규화 (#6530) (#6536) (@houko)
문서화, 유지보수 및 기타 내부 변경 사항
Documentation
- trusted_senders 대 [[users]] RBAC 구성 설명 (#6492) (#6507) (@houko)
- 운영자 로테이션(operator rotation)보다 사용자별 키 우선순위가 높음을 문서화 (#6460) (#6510) (@houko)
Maintenance
- cargo-minor-patch 그룹을 10개의 업데이트로 갱신 (#6452) (@app/dependabot)
- tokio-tungstenite를 0.29.0에서 0.30.0으로 갱신 (#6453) (@app/dependabot)
- yanked spin 0.9.8을 0.9.9로 업데이트 (#6454) (@houko)
- actions-minor-patch 그룹을 3개의 업데이트로 갱신 (#6456) (@app/dependabot)
- actions/setup-node를 6.4.0에서 7.0.0으로 갱신 (#6457) (@app/dependabot)
- defer→approve→resume에 걸친 env trust 분리 적용 (Lock in) (#6465의 후속 조치) (#6467) (@houko)
- /web 내의 web-minor-patch 그룹을 5개의 업데이트로 갱신 (#6472) (@app/dependabot)
- /crates/librefang-api/dashboard 내의 dashboard-minor-patch 그룹을 6개의 업데이트로 갱신 (#6473) (@app/dependabot)
- /crates/librefang-api/dashboard 내의 @eslint/js를 9.39.4에서 9.39.5로 갱신 (#6474) (@app/dependabot)
- serde_with를 3.18.0에서 3.21.0으로 갱신 (#6475) (@app/dependabot)
- /docs 내의 docs-minor-patch 그룹을 4개의 업데이트로 갱신 (#6491) (@app/dependabot)
- 모델 스냅샷 (model snapshot) 업데이트 (#6523) (@houko)
- wasmtime을 46.0.1에서 47.0.1로 갱신 (#6527) (@app/dependabot)
- 1개 디렉토리에 걸친 cargo-minor-patch 그룹을 17개의 업데이트로 갱신 (#6533) (@app/dependabot)
- librefang-acp를 agent-client-protocol 1.3.0으로 마이그레이션 (#6526을 대체함) (#6534) (@houko)
설치 / 업그레이드 (Install / Upgrade)
# 바이너리 (Binary)
curl -fsSL https://get.librefang.ai | sh
...
링크 (Links)
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기